2016-11-16 115 views
-2

我怎么能在这种情况下打印键 - 值对:打印键 - 值对在python

a = [ 
{"name": "Tom", "age": 10}, 
{"name": "Mark", "age": 5}, 
{"name": "Pam", "age": 7} 
] 

search_name = 'Tom' 

for i in a: 
    for key in i: 
     if (i[key] == search_name): 
      print (item for item in a).next() 
     else: 
      print 'No Name' 

我不希望看到“没有名字”消息

+2

嗯,如果你不希望看到它,然后不要打印? – DeepSpace

+0

但是我需要这个消息,因为如果我的字典中没有名字,用户必须收到'没有名字'。但即使我的字典中有名字,我仍然收到'没有名字'的消息。 – andrew

回答

0

更干净的方式来实现这将是:

for dic in a: 
    name = dic.get('name') # will return None if dic has no `name` key 
    if name and name == search_name: 
     print dic 
    else: 
     print 'No Name' 

但无论如何,如果不wan't看到No Name则根本不打印。

+0

如果我的字典中没有名字,我需要看到这条消息,问题是我看到了消息,即使我在我的字典中有名字 – andrew

+0

@andrew好的,请参阅我的更新回答。 – DeepSpace

+0

如果我把名字放在我的字典中,我没有收到'没有名字'的消息 – andrew

0

当然你会看到它。您遍历字典键(for key in i),当您尝试将i["age"]search_name匹配时,它将显示No Name

0

尝试

for dict in a: 
    if search_name in dict.values(): 
     print dict 
    else: 
     print "No name" 
+0

两次“无名”消息 – andrew