2017-06-03 50 views
0
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") 

输出:错误hetting而遍历所有列表和字典

('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

你不工作的原因是因为要检查每个项目的三倍,其中你只需要检查一次。

对于列表中的每个项目,您都要根据字典中的每个键/值对检查它;由于有三个键,所以列表中的每个项目都有三个输出。

尝试一些简单:

for i in lst: 
    print(tuple(i, dict.get(i, 'no id'))) 
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使用python 3语法您print声明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") 

简单地说,你遍历的字典也因此多entiries

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)) 
+0

谢谢你这么多的解决方案:) –

+0

@Kajal可以给予好评,并接受作为答案,如果解决方案适用于您的问题。 – Gahan