Python 如何根据关键字将字典划分为列表?

Python 如何根据关键字将字典划分为列表?,python,Python,我有固定格式的字典,如: dict = {1111: {'vehicle_id': 1111, 'vehicle_capacity': 800}, 3333: {'vehicle_id': 3333, 'vehicle_capacity': 4800}} 我希望得到的输出是: list_dict1 = [{1111: {'vehicle_id': 1111, 'vehicle_capacity': 800}] list_dict2 = [{3333: {'vehicle_id'

我有固定格式的字典,如:

dict = {1111: {'vehicle_id': 1111, 'vehicle_capacity': 800},
        3333: {'vehicle_id': 3333, 'vehicle_capacity': 4800}}
我希望得到的输出是:

list_dict1 = [{1111: {'vehicle_id': 1111, 'vehicle_capacity': 800}]
list_dict2 = [{3333: {'vehicle_id': 3333, 'vehicle_capacity': 4800}]

无法更改dict的格式,我试图通过调用键(1111和3333)来获取它,但是输出将显示,没有键。有人能帮我做这件事吗?

你能试着对字典项进行迭代,然后将整个字典存储到列表中吗?差不多

list_dict1 = []
list_dict2 = []
for k, v in dict.items():
    if k == 1111:
        list_dict1.append({k: v})
    else:
        list_dict2.append({k: v})

我假设您正在查找字典列表。

要在字典中循环获取键和值,请使用以下循环:

对于键,在dict.items()中的值

使用此选项,可以在列表中获取所有必需的值和键

list_all_dict = []
for key, value in dict.items():
    list_cur = []
    list_cur.append({key:value})
    list_all_dict.append(list_cur)

list all dict的每个元素都是相应的列表。

一行解决方案:

>>d={1111:{'vehicle\u id':1111,'vehicle\u capacity':800},
3333:{'vehicle\u id':3333,'vehicle\u capacity':4800}
>>>lst=[dict([(键,值)])表示键,d中的值。items()]
[{1111:{'vehicle\u id':1111,'vehicle\u capacity':800},{3333:{'vehicle\u id':3333,'vehicle\u capacity':4800}]
因此,这是一种以可编辑格式访问字典项的简单方法。然后通过使用,这取决于你的想象力如何转化它


注意,它是创建字典的类构造函数。最好不要在代码中隐藏其绑定。

您可以先获取dict的键 然后将其添加到列表中

keys = list(dict1.keys())
list_dict1 = [{keys[0]: dict1[keys[0]]}]
list_dict2 = [{keys[1]: dict1[keys[1]]}]


它将为您提供完全相同的输出

这将完全满足您的要求,两个
列表
s分别包含一个
dict
(尽管顺序不同..)

让我们在一个交互式python shell中进行介绍。首先设置变量:

>>> test = {1111: {'vehicle_id': 1111, 'vehicle_capacity': 800}, 3333: {'vehicle_id': 3333, 'vehicle_capacity': 4800}}
>>> test
{3333: {'vehicle_id': 3333, 'vehicle_capacity': 4800}, 1111: {'vehicle_id': 1111, 'vehicle_capacity': 800}}
现在,您可以在for循环中遍历关键点:

>>> for key in test:
...     print(key)
...
3333
1111
我们现在需要的是生成要动态实现的列表的变量名<代码>变量()
用于此。因此,让我们使用原始的
dict
来获取每个
的数字序列(您可能还需要检查类似的内容)。其思想是将列表的基本名称
list\u dict
与顺序整数
num
连接起来,以动态生成变量。
for
循环中的
可用于设置每个
列表中
dict
,以及访问原始
dict
以获取和分配相应的值

>>> for num, key in enumerate(test):
...     vars()["list_dict" + str(num+1)] = [{key: test[key]}]
...
>>> list_dict1
[{3333: {'vehicle_id': 3333, 'vehicle_capacity': 4800}}]
>>> list_dict2
[{1111: {'vehicle_id': 1111, 'vehicle_capacity': 800}}]

dict的键可以更改吗?不必是1111和3333。它们不能更改。输入和输出格式都是完全固定的?因为无论你下一步想做什么,都会得到包含一个dict的列表,其中子部分包含主dict的键。结构和信息内容中存在冗余,所以也许你可以通过调整简化的数据结构来简化下一步?你要把它推广到任意多个键吗?在这种情况下,结果列表应该如何存储?
dict
是一个python关键字,当您使用它作为变量来定义字典时,执行
dict(…)
将抛出一个错误。也许您可以详细说明
enumerate()
vars()
do.updated。如有任何不清楚之处,请注明。谢谢