2016-08-12 122 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