用python列表来描述怪异

2024-04-19 09:30:27 发布

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

我的python代码有点复杂。你知道吗

print len(list1)
print len(list2)
dikt = dict(zip(list1,list2))
print len(dikt)

提供:

>> 95
>> 95 
>> 26

为什么dikt给我的值是26而不是95,可以加上列表中的元素不一样。 我不知所措。你知道吗


Tags: 代码元素列表lenzipdictprintlist2
2条回答

list1中可能有重复的值。dict不能有重复的键。你知道吗

>>> list1 = [1, 1, 2]
>>> list2 = ['a', 'b', 'c']
>>> dikt = dict(zip(list1,list2))
>>> print len(dikt)
2
>>> print dikt
{1: 'b', 2: 'c'}

如果list1中有重复条目,则每个条目在dikt中只出现一次。你知道吗

如果要保留与这些重复键相关的所有值,可以执行以下操作

import collections
dikt = collections.defaultdict(list)
list1 = [1, 1, 2, 3, 2, 5, 2, 20]
list2 = list(range(len(list1)))
for k, v in zip(list1, list2):
    dikt[k].append(v)
print(dikt)

这给

defaultdict(<type 'list'>, {1: [0, 1], 2: [2, 4, 6], 3: [3], 20: [7], 5: [5]})

相关问题 更多 >