将 2 个列表合并到字典中,并且不丢失 Python 中的任何元素

Merged 2 List into Dictionary without losing any Element in Python

我有 2 个列表,listA 和 listB 的长度值总共为 35。但是,当我合并 2 列表时,其中一个元素消失了,长度变得更小,变成了 33。有没有办法在不丢失任何元素的情况下将 2 列表变成字典?我尝试了 zip 和普通的 for 循环,但我仍然丢失了一些东西。

listA = ['Produkttyp', 'Integrerade komponenter', 'Spårningsdata', 'Bärstil', 'Urtavla', 'Satta mål', 'Funktioner', 'EAN', 'MPN', 'Typ', 'Upplösning', 'Mått (BxH)', 'Trådlöst gränssnitt', 'Typ', 'Batteritid', 'Information om boetten', 'Namn', 'Storlek', 'Fits Wrist with Circumference', 'Låstyp', 'Material', 'Färg', 'Bredd', 'Djup', 'Längd', 'Vikt', 'Förinstallerad programvara', 'Vibrerande alarm', 'Material', 'Skydd', 'Inkluderade tillbehör', 'Emballagets bredd', 'Emballagets djup', 'Emballagets höjd', 'Emballagets vikt']

listB = ['Aktivitetspårare', 'Hjärtfrekvenssensor', 'Distans, tid, brända kalorier, aktivitet, sovaktivitet, hjärtfrekvens, steg tagna, Antal våningar upp, stressnivå, styrka', 'Handled', 'Ja', 'Ja', 'Meddelande om missade samtal, musikfjärrhantering, SMS-meddelande, E-postmeddelande, kamerafjärrkontroll, Bluetooth Smart-teknologi, automatisk övningsigenkänning, notiser via sociala media, Move IQ, accelerometer, miljöljussensor, barometer, hjärtfrekvens, VO2 max', '753759205157', '010-01995-03', 'OLED - monokrom', '128 x 48 pixlar', '6.6 mm x 17.7 mm', 'Bluetooth 4.0, ANT+', 'Pekskärm', '7 dag(ar)', 'Midnattssvart', 'Band', 'L', '148-215 mm', 'Spänne', 'Silikon', 'Svart', '15 mm', '10.5 mm', '223 mm', '21.5 g', 'VO2 Max, Fitness Age, Move IQ', 'Ja', 'Aluminium', 'Vattentät', 'Laddnings-/datakabel', '14.1 cm', '6.9 cm', '6.2 cm', '116.2 g']

dict(zip(listA, listB))

the result will be: 33 only 
'Produkttyp':'Aktivitetspårare'
'Integrerade komponenter':'Hjärtfrekvenssensor'
'Spårningsdata':'Distans, tid, brända kalorier, aktivitet, sovaktivitet, hjärtfrekvens, steg tagna, Antal våningar upp, stressnivå, styrka'
'Bärstil':'Handled'
'Urtavla':'Ja'
'Satta mål':'Ja'
'Funktioner':'Meddelande om missade samtal, musikfjärrhantering, SMS-meddelande, E-postmeddelande, kamerafjärrkontroll, Bluetooth Smart-teknologi, automatisk övningsigenkänning, notiser via sociala media, Move IQ, accelerometer, miljöljussensor, barometer, hjärtfrekvens, VO2 max'
'EAN':'753759205157'
'MPN':'010-01995-03'
'Typ':'Pekskärm'
'Upplösning':'128 x 48 pixlar'
'Mått (BxH)':'6.6 mm x 17.7 mm'
'Trådlöst gränssnitt':'Bluetooth 4.0, ANT+'
'Batteritid':'7 dag(ar)'
'Information om boetten':'Midnattssvart'
'Namn':'Band'
'Storlek':'L'
'Fits Wrist with Circumference':'148-215 mm'
'Låstyp':'Spänne'
'Material':'Aluminium'
'Färg':'Svart'
'Bredd':'15 mm'
'Djup':'10.5 mm'
'Längd':'223 mm'
'Vikt':'21.5 g'
'Förinstallerad programvara':'VO2 Max, Fitness Age, Move IQ'
'Vibrerande alarm':'Ja'
'Skydd':'Vattentät'
'Inkluderade tillbehör':'Laddnings-/datakabel'
'Emballagets bredd':'14.1 cm'
'Emballagets djup':'6.9 cm'
'Emballagets höjd':'6.2 cm'
'Emballagets vikt':'116.2 g'
len():33

listA 包含两个重复项('Material' 和 'Typ')。字典不能有重复的键,这就解释了为什么您在字典中看到的条目较少。

如果您有重复的键,最好的方法是使字典的值成为一个列表,而不是按如下方式创建的单个项目:

字典有 33 个键和 35 个值,因为 'Typ' 和 'Material' 的条目在列表中包含 2 个项目。

d = dict()

for key, val in zip(listA, listB):
    if key in d:
        d[key].append(val)
    else:
        d[key] = [val]

如果我们再查看 'Typ' 的条目,我们会看到:

d['Typ']
['OLED - monokrom', 'Pekskärm']