python - 如何找到字典和列表之间的匹配项以从匹配项创建新列表?

标签 python list dictionary for-loop nested

我有两组数据 - 字典(data)和列表(list_1),两者长度不等。我想遍历两者并执行以下操作:

  1. 如果 list_1 中的项目与关键数据匹配,则将该值添加到第二个列表。
  2. 如果该项目不在字典中,请添加“NULL”

第三个列表的长度应与 list_1 相同

这里是示例代码:

a = ['dim','john','joey','tron','bob','wilt','kobe']
b = [1,2,3,4,5,6,7]
data = dict(zip(a,b))

list_1 = ['bob','sue','mike','willy','john','may','beth','wilt']

list_2 = []

for x in list_1:
    for key,value in data.items():
        if x in key:
            list_2.append(key)
        elif x not in key:
            list_2.append("NULL")

结果将是

['NULL', 'NULL', 'NULL', 'NULL', 'bob', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'john', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'wilt', 'NULL']

是否可以使第三个列表显示如下?

['bob','NULL','NULL','NULL','john','NULL','NULL','wilt']

最佳答案

您可以通过简单地检查该值是否在字典的键中来完成此操作。

list_1 = ['bob','sue','mike','willy','john','may','beth','wilt']
list_2 = []

for x in list_1:
    if x in data.keys():
        list_2.append(x)
    else:
        list_2.append("NULL")

如果你想要花哨和简洁,你可以使用列表理解。

list_2 = [x if x in data.keys() else "NULL" for x in list_1]

关于python - 如何找到字典和列表之间的匹配项以从匹配项创建新列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55960089/

相关文章:

python - 与 R 相比,将 mysql 表加载到 python 中需要很长时间

python - BeautifulSoup 在 Amazon EC2 机器上的行为有所不同

python - 如何确定透视变换后点在新图像平面中的位置?

python - 如何从 Python 中的 json 文件中获取字典?

PYTHON 从嵌套列表中删除元素

c - c中分配连续链表

java - Spring 批处理 : reading a csv file and modify this list before putting the results in another file

c++ - 如何使用 boost 升级互斥体扩展 C++ boost 列表容器以实现线程安全实现?

java - 从 TreeMap 中检索最后 n 个值

c# - 如何在 C# 中订购字典?