Python dict+的问题;列表的zip-在转换过程中丢失列表的前两个值?

Python dict+的问题;列表的zip-在转换过程中丢失列表的前两个值?,python,dictionary,zip,Python,Dictionary,Zip,测试列表和myShortList的处理方式有什么不同?!请注意,testList的输出在放入dict时缺少2个“testList”值!请帮忙 >>> testList ['1', 'targets', '0', 'alive', '1', 'unreachable'] >>> myShortList ['254', 'targets', '12', 'alive', '242', 'unreachable'] >>> dict(zip(myS

测试列表和myShortList的处理方式有什么不同?!请注意,testList的输出在放入dict时缺少2个“testList”值!请帮忙

>>> testList
['1', 'targets', '0', 'alive', '1', 'unreachable']
>>> myShortList
['254', 'targets', '12', 'alive', '242', 'unreachable']
>>> dict(zip(myShortList[::2], myShortList[1::2]))
{'254': 'targets', '12': 'alive', '242': 'unreachable'}
>>> dict(zip(testList[::2], testList[1::2]))
{'1': 'unreachable', '0': 'alive'}

python字典必须具有唯一的键。在testList中,您将键“1”指定为值“targets”,然后将键“1”指定为值“unreachable”。这将覆盖初始“目标”值,只留下两个条目

更好的格式是将单词[“targets”、“alive”、“unreachable”]作为键,然后每个单词都有一个值。值不必是唯一的,这也允许您轻松地从字典中检索值

test_dict = dict(zip(testList[1::2], testList[::2]))
print(test_dict["targets"])  # Returns "1"

因为在Python中,dict应该具有唯一且不可变的键,在上一个示例中,您试图添加具有相同值的键,因此,它重写了第一个键

打印此文件:

print(list(zip(testList[::2], testList[1::2])))
输出:

[('1', 'targets'), ('0', 'alive'), ('1', 'unreachable')]

testList
有重复的键,这是dict中不能有的。