python - 通过 For 循环使用另一个 JSON 数据的 .append() 生成的列表

标签 python json list dictionary for-loop

myjson = [
    {"GROUP" : "A",
    "TYPE" : "I",
    "VALUE1" : 25,
    "VALUE2" : 26,
    "REMARK" : "None"},

    {"GROUP" : "B",
    "TYPE" : "II",
    "VALUE1" : 33,
    "VALUE2" : 22,
    "REMARK" : "None"}
]

预期输出

[{'GROUP': 'A', 'TYPE': 'I'}, {'GROUP': 'B', 'TYPE': 'II'}]

我的方法

对于myjson中的每一项,选择键GROUPTYPE形成一个字典对象,并将这两个字典对象追加到另一个列表中myjson2

temp = {}
myjson2 = []

for listitem in myjson:
    for key, item in listitem.items():
        if key == "GROUP" or key == "TYPE":          
            temp[key] = item
    print(temp)
    myjson2.append(temp)

上面的 print(temp) 给出:

{'GROUP': 'A', 'TYPE': 'I'}
{'GROUP': 'B', 'TYPE': 'II'}

我想知道为什么每个 .append() 之后会出现以下结果。

print(myjson2)
[{'GROUP': 'B', 'TYPE': 'II'}, {'GROUP': 'B', 'TYPE': 'II'}]

最佳答案

为什么不起作用:您需要每次都附加新字典,而不是用新值覆盖旧字典。只需将该温度移至第一个 for 内,

 myjson = [
  {
    "GROUP": "A",
    "TYPE": "I",
    "VALUE1": 25,
    "VALUE2": 26,
    "REMARK": "None"
  },
  {
    "GROUP": "B",
    "TYPE": "II",
    "VALUE1": 33,
    "VALUE2": 22,
    "REMARK": "None"
  }
]
myjson2 = []
for listitem in myjson:
    temp = {}
    for key, item in listitem.items():
        if key == "GROUP" or key == "TYPE":          
            temp[key] = item
    myjson2.append(temp)
print(myjson2)

单行:具有列表理解

myjson2 = [{key:val for key, val in dic.items() if key in ['GROUP', 'TYPE']} for dic in myjson]

关于python - 通过 For 循环使用另一个 JSON 数据的 .append() 生成的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70770925/

相关文章:

python - Python 3 上的 Numpy

javascript - 通过 POST 将 JSON 字符串(数组)从 Javascript 发送到 PHP

c# - 无法从程序集加载类型 System.Runtime.Versioning.TargetFrameWorkAttribute

java - java中添加后List的所有元素都一样

c++ - 如何通过引用将存储在列表中的结构成员传递给函数?

Python,在 smtplib 参数中添加逗号会导致错误

python - 更新字典列表中的列表值

具有多个循环的 Python 列表理解

python - 属性错误 : module 'tensorflow' has no attribute 'InteractiveSession'

python - 带有鼠标悬停的html网页将数据转换为json