-2

私のPythonコードが複雑になりました。

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

与える:

>> 95
>> 95 
>> 26

diktが95ではなく26の値を与えるのはなぜですか、リスト内の要素が同じではないと追加できます。私は無知です。

4

2 に答える 2

5

おそらくで値を繰り返しています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'}
于 2012-12-13T10:15:35.733 に答える
2

に重複するエントリがある場合list1、それぞれがに1回だけ表示され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]})
于 2012-12-13T10:16:49.443 に答える