我有两个动态变化的列表,我需要最终得到一个字典,当列表的长度发生变化时将列表平均划分并将结果放入字典中。
Examples:
a = ['a','b','c']
b = ['x','y','z','l','m','n','p','q']
Result:
c = { a:['x','y','z'], b:['l','m','n'], c:['p','q'] }
a = ['a','b']
b = ['x','y','z','l','m','n','p','q']
Result:
c = { a:['x','y','z','l'], b:['m','n','p','q'] }
a = ['a','b','c','d']
b = ['x','y','z','l','m','n','p','q']
Result:
c = { a:['x','y'], b:['z','l'], c:['m','n'], d:['p','q'] }
a = ['a','b','c']
b = ['x','y','z','l','m','n','p','q','r','t','s']
Result:
c = { a:['x','y','z','l'], b:['m','n','p','q'], c:['r','t','s'] }
请您参考如下方法:
您还可以创建 block 并将它们映射到 a 中的元素:
a = ['a','b','c']
b = ['x','y','z','l','m','n','p','q','r','t','s']
import math
# find the size
size = math.ceil(len(b)/len(a))
# creating list of chunks of size
chunks = [b[i:i + size] for i in range(0, len(b), size)]
# matching chunks with elements in 'a'
c = {a[i]:chunks[i] for i in range(len(a))}
或者,上述步骤可以使用dictionary comprehension来完成:
c = {a[index]:item for index, item in enumerate(b[i:i + size]
for i in range(0, len(b), size))}
print(c)
输出:
{'a': ['x', 'y', 'z', 'l'], 'b': ['m', 'n', 'p', 'q'], 'c': ['r', 't', 's']}
