python列表分组

时间:2011-12-23 13:31:55

标签: python list

names = ['vol0','CCBU','ICBU','AliGroup',.....]
value_list=['$1','$2','$3','$4','$5','$6',.......]

我需要的是:

result = {vol0:['$1','$2'],CCBU:['$3','$4'],ICBU:['$5','$6'],.....}

2 个答案:

答案 0 :(得分:1)

这是你可以做到的一种方式

value_list=['$1','$2','$3','$4','$5','$6']
names = ['vol0','CCBU','ICBU','AliGroup']
it=iter(value_list)
result=dict((name,[it.next(),it.next()]) for name in names)
result
{'ICBU': ['$5', '$6'], 'vol0': ['$1', '$2'], 'CCBU': ['$3', '$4']}

注意***正如我理解您的问题陈述,您不要将value_list的连续元素组合为字典的列表,其关键是相同序列中的名称。 iter将返回一个迭代器,您可以使用它迭代名称列表。 next方法从迭代列表中检索下一个元素。其余的很简单,创建一个字典理解,密钥迭代名称和迭代器的两次连续迭代生成的值列表。

答案 1 :(得分:1)

可能有一种更简单的方法,但是:

vals_per_name=2
result={}
for i in range(len(value_list)/vals_per_name):
    result[names[i]]=value_list[vals_per_name*i:vals_per_name*(i+1)]

应该做你想做的事。