import os
import sys
lst = ["ABCD", "LMN" , "STU" , "PQRS" ]
dict = { 'ABCD':'kajal' , 'LMN' :'John' , 'PQRS' : 'Anni'}
for i in lst:
for k,l in dict.items():
if i == k:
print(i,l)
else:
print(i,"no id")
输出:
('ABCD', 'kajal')
('ABCD', 'no id')
('ABCD', 'no id')
('LMN', 'no id')
('LMN', 'no id')
('LMN', 'John')
('STU', 'no id')
('STU', 'no id')
('STU', 'no id')
('PQRS', 'no id')
('PQRS', 'Anni')
('PQRS', 'no id')
预期产出:
('ABCD', 'kajal')
('LMN', 'John')
('STU', 'no id')
('PQRS', 'Anni')
答案 0 :(得分:0)
你的工作不起作用的原因是因为你要检查每个项目三次,你只需要检查一次。
对于列表中的每个项目,您将根据字典中的每个键/值对进行检查;由于有三个键,因此列表中的每个项目都有三个输出。
尝试简单的事情:
for i in lst:
print(tuple(i, dict.get(i, 'no id')))
答案 1 :(得分:0)
首先,避免使用dict
之类的变量名称 - 它会屏蔽具有相同名称的标准函数。您在列表中迭代一次,然后在字典中迭代。这是另一种方法:
lst = ["ABCD", "LMN" , "STU" , "PQRS" ]
mydict = { 'ABCD':'kajal' , 'LMN' :'John' , 'PQRS' : 'Anni'}
for i in lst:
if i in mydict:
print(i,mydict[i])
else:
print(i,"no id")
使用in
关键字测试来确定是否存在密钥。
顺便说一下,输出中( )
的存在表明你在python 2中使用了print
语句的python 3语法。
答案 2 :(得分:0)
import os
import sys
lst = ["ABCD", "LMN" , "STU" , "PQRS" ]
dict = { 'ABCD':'kajal' , 'LMN' :'John' , 'PQRS' : 'Anni'}
for i in lst:
if i in dict:
print(i, dict[i])
else:
print(i, "no id")
简单地说,你也遍历了dict,因此多个entiries
答案 3 :(得分:0)
def list_from_dict(id, dictionary):
if id in dictionary.keys():
return id, dictionary[id]
else:
return id,"no id"
lst = ["ABCD", "LMN" , "STU" , "PQRS" ]
dic = { 'ABCD':'kajal' , 'LMN' :'John' , 'PQRS' : 'Anni'}
for items in lst:
print(list_from_dict(items,dic))