将两个列表合并成一本词典

2024-04-24 11:10:39 发布

您现在位置:Python中文网/ 问答频道 /正文

以下是我的列表(两个列表的长度相同—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'
}

有人知道怎么做吗?有可能吗?提前谢谢!!!你知道吗


Tags: tofrom列表indexdictionary字典gsmlist2
3条回答

您可以使用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']})

试着用一个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']}

你可以这样实现。你知道吗

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并将值直接插入对应的列表。你知道吗

相关问题 更多 >