2017-09-04 66 views
-2

比方说,我有字典的以下列表:Python的检索字典值列表中的

[ 
     { 
       "id": 1, 
       "name": "string 1" 
     }, 
     { 
       "id": 2, 
       "name": "string 2" 
     }, 
     { 
       "id": 3, 
       "name": "string 3" 
     }, 
     { 
       "id": 4, 
       "name": "string 4" 
     } 
] 

有基于任何方式可以检索第一字典{"id": 4, "name": "string 4"}"id""name""string 1"

+0

当然,只是重复,当你有一个值匹配,你有其他的。或者从列表中创建一个字典(将名称值映射到id值),并且可以高效地为多个名称执行此操作。你在某处遇到过你的尝试吗? –

回答

4

这应该工作,它在字典中的列表迭代来发现具有名称等于你的目标,并打印出它的ID

for dictionary in list: 
    if dictionary["name"] == target: 
     print (dictionary["id"]) 
+0

你尝试过吗?你可能的意思是'我['名字']' –

+0

不,但哎呀,感谢您指出:) – chngzm

1

一个简单的列表理解可以做的伎俩字典:

a=[ 
     { 
       "id": 1, 
       "name": "string 1" 
     }, 
     { 
       "id": 2, 
       "name": "string 2" 
     }, 
     { 
       "id": 3, 
       "name": "string 3" 
     }, 
     { 
       "id": 4, 
       "name": "string 4" 
     } 
] 
result = [ x for x in a if x["name"] == "string 1" ] 

您可以使用result = [ x["id"] for x in a if x["name"] == "string 1" ]如果你只是想匹配搜索字符串该ID的列表。

0

您的问题的一行代码。

output = [ value["id"] for value in a if value["name"] == "string 1" ] 

这将返回所有的ID列表中具有名称等于串1