2011-12-23 71 views
-1
names = ['vol0','CCBU','ICBU','AliGroup',.....] 
value_list=['$1','$2','$3','$4','$5','$6',.......] 

我需要的結果是:Python列表分組

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

使用四個空格而不是反引號來縮進代碼塊。 – 2011-12-23 13:34:00

+0

最後一句話是關於什麼的? – 2011-12-23 13:35:53

回答

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方法從迭代列表中檢索下一個元素。其餘部分很簡單,創建一個字典理解,這些鍵遍歷名稱和通過迭代器進行兩次連續迭代生成的值列表。

+0

快速準確:) :) – Edward 2011-12-23 15:20:27

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)] 

應該做你想要什麼。

+0

快速準確:) thks – Edward 2011-12-23 15:24:41