2016-08-12 43 views
0

這些是我的列表(兩個列表具有相同的長度 - 43度指數):加入兩個列表成爲一個字典

list1 = [u'UMTS', u'UMTS', u'UMTS', u'GSM', u'GSM', u'GSM', u'GSM', u'GSM', u'GSM', u'GSM', u'GSM', u'GSM', u'GSM', u'GSM', u'GSM', u'GSM', u'GSM', u'GSM', u'GSM', u'GSM', u'GSM', u'GSM', u'GSM', u'GSM', u'GSM', u'GSM', u'GSM', u'GSM', u'GSM', u'GSM', u'GSM', u'GSM', u'GSM', u'GSM', u'GSM', u'GSM', u'GSM', u'GSM', u'GSM', u'GSM', u'GSM', u'GSM', u'LTE'] 

list2 = [u'60000', u'60000', u'60000', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'120000', u'120000', u'120000', u'120512', u'120512', u'120512', u'120512', u'120512', u'120512', u'118629', u'118629', u'118629', u'120000', u'120000', u'120000', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'300000'] 

我想將它們連接成一個字典:

dictionary = { 
    'UMTS' : 'indices from 0 to 2' 
    'GSM' : 'indices from 3 to 42' 
    'LTE' : 'index 43' 
} 

不任何人都知道如何做到這一點?它有可能嗎?提前致謝 !!!

+0

我要補充一點,在其他情況下,列表可以有或多或少的指標(但始終不變的量) – pingwin850

回答

2

您可以使用collections.defaultdict()zip()功能:

>>> from collections import defaultdict 
>>> 
>>> d = defaultdict(list) 
>>> 
>>> for i, j in zip(list1, list2): 
...  d[i].append(j) 
... 
>>> d 
defaultdict(<type 'list'>, {u'UMTS': [u'60000', u'60000', u'60000'], u'GSM': [u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'120000', u'120000', u'120000', u'120512', u'120512', u'120512', u'120512', u'120512', u'120512', u'118629', u'118629', u'118629', u'120000', u'120000', u'120000', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629'], u'LTE': [u'300000']}) 
+0

感謝您的幫助:)這就是我需要的東西.. – pingwin850

1

您可以實現這樣的。

result = {} 
for i in set(list1): 
    result.update({i:[]}) 
for i,j in zip(list1,list2): 
    result[i].append(j) 

結果

{u'UMTS': [u'60000', u'60000', u'60000'], u'GSM': [u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'120000', u'120000', u'120000', u'120512', u'120512', u'120512', u'120512', u'120512', u'120512', u'118629', u'118629', u'118629', u'120000', u'120000', u'120000', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629'], u'LTE': [u'300000']} 

概念

創建與所述list1的可能值和空列表作爲值的字典。通過使用set,您只會獲得一次元素。並遍歷list1list2並直接將值插入到相應的列表中。

1

嘗試使用單個for循環。這不是你想要的嗎?

>>> for i in range(0,len(list1)): 
...  if(mydict.get(list1[i]) is None): 
...    mydict[list1[i]]=[list2[i]] 
...  else: 
...    mydict[list1[i]].append(list2[i]) 
... 
>>> mydict 
{u'UMTS': [u'60000', u'60000', u'60000'], u'GSM': [u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'120000', u'120000', u'120000', u'120512', u'120512', u'120512', u'120512', u'120512', u'120512', u'118629', u'118629', u'118629', u'120000', u'120000', u'120000', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629', u'118629'], u'LTE': [u'300000']} 
+0

你如何在一個額外的'60000'結果? –

+0

@RahulKP謝謝你指出...... mydict有一些被追加的內容......現在清除它並再次運行...現在它看起來很好... –

+0

謝謝,它也能正常工作;) – pingwin850