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

时间:2020-06-25 07:17:13

标签: 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': 3333, 'vehicle_capacity': 4800}]

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

6 个答案:

答案 0 :(得分:4)

一线解决方案:

>>> d = {1111: {'vehicle_id': 1111, 'vehicle_capacity': 800},
         3333: {'vehicle_id': 3333, 'vehicle_capacity': 4800}}

>>> lst = [dict([(key, value)]) for key, value in d.items()]
[{1111: {'vehicle_id': 1111, 'vehicle_capacity': 800}}, {3333: {'vehicle_id': 3333, 'vehicle_capacity': 4800}}]

所以dict.items()是一种可迭代格式访问字典项的简单方法。然后通过使用list comprehension,如何转换它完全取决于您的想象力。

请注意,dict is a reserved keyword in Python是创建字典的类构造函数。最好不要在代码中隐藏其绑定。

答案 1 :(得分:1)

这完全可以满足您的要求,两个function getNormalizedLocationPath($path) { $path = is_scalar($path) ? strtolower(trim($path)) : ''; $path = preg_replace('/[^a-z0-9.]/', '', $path); return $path; } $path=getNormalizedLocationPath($_GET['path']); $sql= "INSERT INTO paths VALUES (${path})"; $pdo = new PDO(); $pdo->query($sql); 包含一个list(尽管顺序不同)。

在交互式python shell中逐步进行学习。首先设置变量:

dict

现在您可以在for循环中遍历键了:

>>> 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}}

我们现在需要的是生成要动态实现的列表的变量名。 We may use >>> for key in test: ... print(key) ... 3333 1111 。因此,让我们enumerate原始vars()的{​​{1}}来获得每个key的数字序列(您可能想查看zip来进行类似的操作以及)。想法是将列表的基础名称dict与顺序整数key串联起来,以动态生成变量。 list_dict循环中的num可用于设置每个keyfor的{​​{1}}以及访问原始key获取并分配相应的值。

dict

答案 2 :(得分:0)

您可以尝试遍历字典项,然后将整个字典存储到列表中吗?像

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

我假设您正在寻找词典列表。

答案 3 :(得分:0)

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

for key, value in dict.items()

使用此功能,您可以在列表中获取所有必需的值和键。

答案 4 :(得分:0)

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

列表dict的每个元素都是对应的列表。

答案 5 :(得分:0)

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

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

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