我在列表中有这个示例json数据:
$ENV{LOGNAME}
我需要一种方法来根据'Name'键从列表中的元素中提取所有键值对。如果我的变量='John_Doe',那么脚本应该只返回与John_Doe相关的值,i,只有以下值:
ccperl yourScript.pl
答案 0 :(得分:1)
只需提取与关键字"John_Doe"
相关联的值为"Name"
的所有词典:
print([d for d in data if d['Name'] == "John_Doe"])
# [{ "Name": "John_Doe", "Age" : 25 }]
或filter()
:
print(list(filter(lambda x : x['Name'] == "John_Doe", data)))
# [{ "Name": "John_Doe", "Age" : 25 }]
答案 1 :(得分:1)
如果您需要的是Name
元素匹配John_Doe
的字典,那么:
matches = [m for m in data if "Name" in m and m["Name"] == "John_Doe"]
您可以展开此列表理解以查看其功能:
matches = []
for m in data:
if "Name" in m and m["Name"] == "John_Doe":
matches.append[m]
答案 2 :(得分:1)
def get_details(data, name):
for i in data:
if i['Name'] == name:
return i
return {}
data = [{"Name": "John_Doe", "Age" : 25 },{"Name": "Jane_Roe", "Age" : 26 }]
name = "John_Doe"
get_details(data, name)
输出:
{'Age': 25, 'Name': 'John_Doe'}