这些是我的清单(两个清单都有相同的长度 - 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 :(得分: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']})
答案 1 :(得分: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
,您只需获取一次元素。并遍历list1
和list2
并将值直接插入到对应的列表中。
答案 2 :(得分: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']}