有什么pythonic的方法可以从字典中形成字典,而很少有键具有列表值?

时间:2019-11-15 17:08:57

标签: python-3.x

示例1:

Items = {'key1': 1, 'key2': '[0,2,3,4]', 'key3': '[5,6,7,8]', 'key4': 9}
Expected output:

 {'key1':1, 'key2':2,'key3':0, 'key4':9}, {'key1':1, 'key2':0,'key3':5, 'key4':9}, ... ] 

由于key2中list的第一个值为0,因此在这种情况下我们将不继续进行。 生成的词典数应为7。

示例2:

Items = {'key1': 1, 'key2': '[0,2,0,0]', 'key3': '[5,6,7,8]', 'key4': 9}
Expected output:

 [{'key1':1, 'key2':2,'key3':0, 'key4':9}] 

将仅创建1个字典

1 个答案:

答案 0 :(得分:1)

这是一个使用for循环的解决方案,其中n指的是Items字典中列表的长度:

Items = {'key1': 1, 'key2': [1,2,3,4], 'key3': [5,6,7,8], 'key4': 9}

out = []
n = 4
for i in range(n):
    d = {}
    for k in Items:
        if type(Items[k]) == int:
            d[k] = Items[k]
        elif type(Items[k]) == list:
            d[k] = Items[k][i]
    out.append(d)
print(out)

该代码输出以下内容:

[
    {'key2': 1, 'key3': 5, 'key1': 1, 'key4': 9},
    {'key2': 2, 'key3': 6, 'key1': 1, 'key4': 9},
    {'key2': 3, 'key3': 7, 'key1': 1, 'key4': 9},
    {'key2': 4, 'key3': 8, 'key1': 1, 'key4': 9}
]

请注意,我将Items字典中的值更改为列表,而不是列表的字符串表示形式。