我有两组数据-长度不相等的字典(数据)和列表(列表_1)。我想遍历两者并执行以下操作:
第三个列表的长度应与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']
答案 0 :(得分:2)
您可以通过简单地检查值是否在字典的键中来完成此操作。
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]
答案 1 :(得分:1)
只需滚动一次列表。
for x in list_1:
if x in list(data.keys()):
list_2.append(x)
else:
list_2.append('NULL')
答案 2 :(得分:0)
如果使用函数len()检查输出的长度,则会得到56 = length_of_list1(8)* length_of_data(7)。但是您只需要与list1具有相同长度的list 2,因此您可能会发现循环for key,value in data.items():
是多余的。您可以使用字典find
中的if x in data.keys():
函数进行检查,而无需一一检查k与x的关系。