Skip to main content
 首页 » 编程设计

Python:将一个列表除以另一个列表的长度,并用该除法创建一个字典

2025年05月04日26lovecherry

我有两个动态变化的列表,我需要最终得到一个字典,当列表的长度发生变化时将列表平均划分并将结果放入字典中。

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