Python 对列表和字典进行迭代时出错
输出:Python 对列表和字典进行迭代时出错,python,indentation,Python,Indentation,输出: 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
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')
首先,避免使用变量名,如
dict
——它会用相同的名称屏蔽标准函数。在列表中迭代一次,然后在字典中迭代。以下是另一种方法:
for i in lst:
print(tuple(i, dict.get(i, 'no id')))
使用中的关键字测试是否存在密钥
顺便说一句,输出中出现的()
表明您正在使用Python2中的print
语句使用Python3语法
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")
简单地说,您也迭代了dict,因此多个实体非常感谢您的解决方案:)@Kajal如果解决方案对您的问题有效,您可以投票并接受作为答案。
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")
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))