从两个嵌套列表制作字典
Making a dictionary from two nested lists
我想使用列表理解从两个嵌套列表中创建一个字典列表。我尝试了不同的技术,但没有用。
a = [ ['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i'] ]
b = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]
想要的结果是
c = [ {'a':1, 'b':2, 'c':3}, {'d':4, 'e':5, 'f':6}, {'g':7, 'h':8, 'i':9} ]
我最后尝试的是
c = [dict(zip(a,b)) for list1, list2 in zip(a,b) for letter, number in zip(list1,list2)]
您需要同时遍历两个列表,您可以通过 zip
ping 一起然后 zip
ping 每个列表并将其传输到 dict
来实现。
你可以通过使用这个 oneliner 来实现
a = [ ['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i'] ]
b = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]
c = [dict(zip(l1, l2)) for l1, l2 in zip(a, b)]
# [{'a': 1, 'b': 2, 'c': 3}, {'d': 4, 'e': 5, 'f': 6}, {'g': 7, 'h': 8, 'i': 9}]
当您 zip
a
和 b
时,它会创建一个可迭代的元组:
out = list(zip(a, b))
[(['a', 'b', 'c'], [1, 2, 3]),
(['d', 'e', 'f'], [4, 5, 6]),
(['g', 'h', 'i'], [7, 8, 9])]
现在,如果您查看上面的列表,应该清楚每对列表都是您想要的结果中字典的键和值。所以很自然地,我们应该 zip
每对:
for sublist1, sublist2 in zip(a,b):
print(list(zip(sublist1, sublist2)))
[('a', 1), ('b', 2), ('c', 3)]
[('d', 4), ('e', 5), ('f', 6)]
[('g', 7), ('h', 8), ('i', 9)]
以上结果表明每个元组在所需字典中是 key-value 对。
所以我们可以使用 dict 构造函数而不是打印它们:
out = [dict(zip(sublist1, sublist2)) for sublist1, sublist2 in zip(a, b)]
输出:
[{'a': 1, 'b': 2, 'c': 3}, {'d': 4, 'e': 5, 'f': 6}, {'g': 7, 'h': 8, 'i': 9}]
我想使用列表理解从两个嵌套列表中创建一个字典列表。我尝试了不同的技术,但没有用。
a = [ ['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i'] ]
b = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]
想要的结果是
c = [ {'a':1, 'b':2, 'c':3}, {'d':4, 'e':5, 'f':6}, {'g':7, 'h':8, 'i':9} ]
我最后尝试的是
c = [dict(zip(a,b)) for list1, list2 in zip(a,b) for letter, number in zip(list1,list2)]
您需要同时遍历两个列表,您可以通过 zip
ping 一起然后 zip
ping 每个列表并将其传输到 dict
来实现。
你可以通过使用这个 oneliner 来实现
a = [ ['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i'] ]
b = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]
c = [dict(zip(l1, l2)) for l1, l2 in zip(a, b)]
# [{'a': 1, 'b': 2, 'c': 3}, {'d': 4, 'e': 5, 'f': 6}, {'g': 7, 'h': 8, 'i': 9}]
当您 zip
a
和 b
时,它会创建一个可迭代的元组:
out = list(zip(a, b))
[(['a', 'b', 'c'], [1, 2, 3]),
(['d', 'e', 'f'], [4, 5, 6]),
(['g', 'h', 'i'], [7, 8, 9])]
现在,如果您查看上面的列表,应该清楚每对列表都是您想要的结果中字典的键和值。所以很自然地,我们应该 zip
每对:
for sublist1, sublist2 in zip(a,b):
print(list(zip(sublist1, sublist2)))
[('a', 1), ('b', 2), ('c', 3)]
[('d', 4), ('e', 5), ('f', 6)]
[('g', 7), ('h', 8), ('i', 9)]
以上结果表明每个元组在所需字典中是 key-value 对。
所以我们可以使用 dict 构造函数而不是打印它们:
out = [dict(zip(sublist1, sublist2)) for sublist1, sublist2 in zip(a, b)]
输出:
[{'a': 1, 'b': 2, 'c': 3}, {'d': 4, 'e': 5, 'f': 6}, {'g': 7, 'h': 8, 'i': 9}]