2016-11-16 77 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