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



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

我的列表:

a = [ 
{
"id": "1",
"system": "2",
},
{
"id": "3",
"system": "4",
}
]
现在我需要将其解析为一个函数(next)函数),它返回a[current][0].但现在是a[current][0]一个dict .

下一步是提取ID以及它的价值。但是下面的代码只适用于a是一个列表!所以我需要将转换为[current][0]变成一个列表。下面的代码必须是相同的,因为它是一个函数,如果由于几个原因我不能改变它,那么我需要将字典转换为a.
c = list()
for data in a:
value = dict()
value["id"] = data.get("id")
c.append(value)

在这里我卡住了,我尝试了几种方法,如。keys(),。values(),但我不能把它们放在一起的列表了。它需要可扩展/可配置,因为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",
}
]

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]])

代码更新:

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

print([[value] for value in a ])

结果:

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

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

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

像这样使用:

c = filter_dicts("id", a)

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

相关内容

  • 没有找到相关文章

最新更新