{"type":{"value":221,"Name":"Grey"},"value":"40.6"},
{"type":{"value":222,"Name":"Orange"},"value":"40.2"},
{"type":{"value":223,"Name":"Purple"},"value":"12.2"},
访问外部最清洁的方式是什么?#34;价值"来自此特定JSON字典的"40.2"
if "Name" == "Orange"
?
我设法通过迭代来实现这一点,但它变得混乱,所以任何想法如何根据内部花括号内的值获取外部值
答案 0 :(得分:3)
我假设您有一个词典列表
l = [{"type":{"value":221,"Name":"Grey"},"value":"40.6"},
{"type":{"value":222,"Name":"Orange"},"value":"40.2"},
{"type":{"value":223,"Name":"Purple"},"value":"12.2"}]
我们假设许多名称可以是Orange
。我们将使用列表推导将其缩减为一个字典列表,其中'Name': 'Orange'
从那些
values = [d['value'] for d in l if d['type']['Name'] == 'Orange']
答案 1 :(得分:0)
这个答案基于Patrick Haugh的。如果列表中只有一个“橙色”,您可以这样做:
data = [
{"type": {"value": 221, "Name": "Grey"}, "value": "40.6"},
{"type": {"value": 222, "Name": "Orange"}, "value": "40.2"},
{"type": {"value": 223, "Name": "Purple"}, "value": "12.2"}
]
print next((x['value'] for x in data if x['type']['Name'] == 'Orange'), 'not found')
输出:
40.2
表达式(x['value'] for x in data if x['type']['Name'] == 'Orange')
与Patrick的解决方案相同,但它是生成器表达式而不是列表推导。不同之处在于生成器表达式更有效:它会在找到目标后立即停止查找,而列表理解将继续搜索直到列表末尾。
next
函数采用上面的表达式,得到下一个项目。如果在列表中找不到“Orange”,它将返回第二个参数,即字符串'not found'
。