繁体   English   中英

将字典转换为具有相同键、值和布局的列表

[英]Convert dict to list with same keys, values and layout

我正在尝试从列表中提取几个键/值。

我的清单:

a = [ 
      {
        "id": "1",
        "system": "2",
      },
      {
        "id": "3",
        "system": "4",
      }
    ]

现在我需要将其解析为一个函数(下一个函数)并返回a[current]a[0] 但是现在是a[current]a[0]一个字典。

下一步只是提取ID和它的值。 但这仅在a是列表时才有效! 所以我需要将a[current]a[0]转换成一个列表。 下面的代码必须相同,因为它是一个函数,如果由于多种原因我无法更改它,那么我需要将 dict a转换为列表a

c = list()
for data in a:
     value = dict()
     value["id"] = data.get("id")
     c.append(value)

我在这里卡住了,我尝试了几种方法,如 .keys()、.values(),但我不能再将它们放在一起到列表中。 它需要可扩展/可配置,因为a会不时发生变化(不是 a[0]["id"], ...)。 目前 a[0] 看起来像这样:{'id': '1', 'system': '2'},但它需要像这样: [{'id': '1', 'system': ' 2'},],我可以将其解析为我的搜索功能。

我需要一个像c这样的新列表:

    c = [ 
          {
            "id": "1",
          },
          {
            "id": "3",
          }
        ]

代码更新:

a = [ 
      {
        "id": "1",
        "system": "2",
      },
      {
        "id": "3",
        "system": "4",
      }
    ]
    
print([[value] for value in a ])

结果:

[[{'id': '1', 'system': '2'}], [{'id': '3', 'system': '4'}]]

这是您的预期输出:

a = [ 
      {
        "id": "1",
        "system": "2",
      },
      {
        "id": "3",
        "system": "4",
      }
    ]
    
c = list()
for data in a:
     value={}
     value["id"]=data.get("id")
     c.append([value])
     # c.extend([value])

print(c)
# [[{'id': '1'}], [{'id': '3'}]]

# print(c) # Extend's output 
# [{'id': '1'},{'id': '3'}]

或者您可以尝试单线解决方案

print([[{"id":val.get("id")}] for val in a])
# [[{'id': '1'}], [{'id': '3'}]]

或者如果你只是想作为你的评论

[{'id': '1', 'system': '2'},]

然后 :

print([a[0]])

这是一个过滤字典列表的函数:

def filter_dicts(key, a):
    return [{key: element[key]} for element in a]

像这样使用它:

c = filter_dicts("id", a)

请注意,如果存在没有指定键的字典,这将导致错误,这可能是您想要的,也可能不是。 为避免这种情况,请将element[key]替换为element.get(key, None)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM