【发布时间】:2021-09-18 05:08:45
【问题描述】:
我一直在努力让它发挥作用。 有两个不同的 JSON 列表包含不同的键。
列表1
[
{
"name":"John",
"measurement": "5.11"
},
{
"name":"Kate",
"measurement": "5.6"
}
]
列表2
[
{
"name":"John",
"characteristics": {
"height": [
"6.0"
]
}
},
{
"name":"Mike",
"characteristics": {
"height": [
"5.10"
]
}
}
]
代码
for k in list2:
if v['name'] in [key['name'] for key in list1:
list1.append(k['measurement'])
我得到的输出是,
[{'name': 'John', 'characteristics': ['height': '6.0', 'age': 30}, '5.11']
预期输出
[{'name': 'John', 'characteristics': ['height': '5.11', 'age': 30}]
循环遍历键,如果 key['name'] 在两个列表中相等,
然后它继续发生来自给定键的特定值。
唯一的问题是它对我来说不能正常工作。我只想用测量中的值替换特征中的高度值。
[编辑]:
我对json进行了更改。现在应该是正确的。基本上,height 是一个数组。
【问题讨论】:
-
[key['name']]缺少] -
您提交的代码有语法错误。 @Sujay 指出的一个问题,例如在
list2中,“高度”中缺少一个结束引号,并且在其值(6.0 和 5.11)之后有一个额外的冒号。更重要的是,如果这些项目应该是key: value格式,那么它们应该是字典,而不是列表。 -
我修好了。那是我的错误,因为我键入它而不是复制和粘贴它。至于钥匙,我该如何解决?我将这个精确的 for 循环与另一个脚本中的 if 语句一起使用。虽然,那个 for 循环是用于查找键是否为
not in另一个列表。 -
您可以使用字典,如
"characteristics": {"height": "5.10", "age", 25},但我个人认为在主字典中只使用height和age以及name并没有什么意义。跨度> -
我尝试将 if 语句切换为 list1.get('name') == list2.get('name')
标签: python json list loops append