将索引处的元素组合在字典内的列表中
Grouping elements at an index together in a list inside a dictionary
我有一个很大的 python 字典,类型如下:
bbox = {'0': [a, b, c, l, m],
'1': [d, e],
'2': [f, g],
'3': [h],
'4': [],
'5': [i, j, k]}
我想将每个列表中同一索引处的元素组合在一起。同时忽略空位置。
输出是这样的:
output= [[a, d, f, h, i],
[b, e, g, j],
[c, k],
[l],
[m]
]
字典很大(300 个元素),每个值列表中的元素数量未知。
有我可以使用的功能吗?
谢谢,
使用 defaultdict
并跳跃
bbox = {'0': ['a', 'b', 'c', 'l', 'm'], '1': ['d', 'e'], '2': ['f', 'g'],
'3': ['h'], '4': [], '5': ['i', 'j', 'k']}
# from collections import defaultdict
result = defaultdict(list)
for values in bbox.values():
for i, v in enumerate(values):
result[i].append(v)
final = list(result.values())
print(final)
# [['a', 'd', 'f', 'h', 'i'], ['b', 'e', 'g', 'j'], ['c', 'k'], ['l'], ['m']]
尝试:
from itertools import zip_longest
bbox = {
"0": ["a", "b", "c", "l", "m"],
"1": ["d", "e"],
"2": ["f", "g"],
"3": ["h"],
"4": [],
"5": ["i", "j", "k"],
}
dummy = object()
out = [
[v for v in t if v is not dummy]
for t in zip_longest(*bbox.values(), fillvalue=dummy)
]
print(out)
打印:
[["a", "d", "f", "h", "i"],
["b", "e", "g", "j"],
["c", "k"],
["l"],
["m"]]
我有一个很大的 python 字典,类型如下:
bbox = {'0': [a, b, c, l, m],
'1': [d, e],
'2': [f, g],
'3': [h],
'4': [],
'5': [i, j, k]}
我想将每个列表中同一索引处的元素组合在一起。同时忽略空位置。 输出是这样的:
output= [[a, d, f, h, i],
[b, e, g, j],
[c, k],
[l],
[m]
]
字典很大(300 个元素),每个值列表中的元素数量未知。 有我可以使用的功能吗?
谢谢,
使用 defaultdict
并跳跃
bbox = {'0': ['a', 'b', 'c', 'l', 'm'], '1': ['d', 'e'], '2': ['f', 'g'],
'3': ['h'], '4': [], '5': ['i', 'j', 'k']}
# from collections import defaultdict
result = defaultdict(list)
for values in bbox.values():
for i, v in enumerate(values):
result[i].append(v)
final = list(result.values())
print(final)
# [['a', 'd', 'f', 'h', 'i'], ['b', 'e', 'g', 'j'], ['c', 'k'], ['l'], ['m']]
尝试:
from itertools import zip_longest
bbox = {
"0": ["a", "b", "c", "l", "m"],
"1": ["d", "e"],
"2": ["f", "g"],
"3": ["h"],
"4": [],
"5": ["i", "j", "k"],
}
dummy = object()
out = [
[v for v in t if v is not dummy]
for t in zip_longest(*bbox.values(), fillvalue=dummy)
]
print(out)
打印:
[["a", "d", "f", "h", "i"],
["b", "e", "g", "j"],
["c", "k"],
["l"],
["m"]]