Python:zip 2将列表放入一个命令行,删除重复的键,但保留值

Python:zip 2将列表放入一个命令行,删除重复的键,但保留值,python,list,multiset,Python,List,Multiset,我是Python新手。我试图将两个列表压缩到字典中,而不会丢失重复键的值,并将值作为列表保留在字典中 例如: list1 = [0.43, -1.2, 50, -60.5, 50] list2 = ['tree', 'cat', 'cat', 'tree', 'hat'] 我试图得到以下结果: {'tree': [0.43, -60.5],'cat': [-1.2, 50],'hat': [50]} 谢谢您的帮助。您可以使用字典的方法: list1 = [0.43, -1.2, 50, -

我是Python新手。我试图将两个列表压缩到字典中,而不会丢失重复键的值,并将值作为列表保留在字典中

例如:

list1 = [0.43, -1.2, 50, -60.5, 50]

list2 = ['tree', 'cat', 'cat', 'tree', 'hat']
我试图得到以下结果:

{'tree': [0.43, -60.5],'cat': [-1.2, 50],'hat': [50]}
谢谢您的帮助。

您可以使用字典的方法:

list1 = [0.43, -1.2, 50, -60.5, 50]
list2 = ['tree', 'cat', 'cat', 'tree', 'hat']
d = {}
for k, v in zip(list2, list1):
    d.setdefault(k, []).append(v)
结果:

>>> d
{'cat': [-1.2, 50], 'hat': [50], 'tree': [0.43, -60.5]}
您可以使用字典的方法:

list1 = [0.43, -1.2, 50, -60.5, 50]
list2 = ['tree', 'cat', 'cat', 'tree', 'hat']
d = {}
for k, v in zip(list2, list1):
    d.setdefault(k, []).append(v)
结果:

>>> d
{'cat': [-1.2, 50], 'hat': [50], 'tree': [0.43, -60.5]}

迈克·穆勒提供的答案非常有效。另一种可能稍微更具python风格的方法是使用集合库:

from collections import defaultdict

list1 = [0.43, -1.2, 50, -60.5, 50]
list2 = ['tree', 'cat', 'cat', 'tree', 'hat']
d = defaultdict(list)
for k, v in zip(list2, list1):
    d[k].append(v)

迈克·穆勒提供的答案非常有效。另一种可能稍微更具python风格的方法是使用集合库:

from collections import defaultdict

list1 = [0.43, -1.2, 50, -60.5, 50]
list2 = ['tree', 'cat', 'cat', 'tree', 'hat']
d = defaultdict(list)
for k, v in zip(list2, list1):
    d[k].append(v)

为了完整起见,我在早期编程时会这样做

>>> list1 = [0.43, -1.2, 50, -60.5, 50]
>>> list2 = ['tree', 'cat', 'cat', 'tree', 'hat']
>>> result=dict()
>>> for k,v in zip(list2,list1):
        if k in result:
            result[k].append(v)
        else:
            result[k]=[v]


>>> result
{'hat': [50], 'tree': [0.43, -60.5], 'cat': [-1.2, 50]}
>>> 

为了完整起见,我在早期编程时会这样做

>>> list1 = [0.43, -1.2, 50, -60.5, 50]
>>> list2 = ['tree', 'cat', 'cat', 'tree', 'hat']
>>> result=dict()
>>> for k,v in zip(list2,list1):
        if k in result:
            result[k].append(v)
        else:
            result[k]=[v]


>>> result
{'hat': [50], 'tree': [0.43, -60.5], 'cat': [-1.2, 50]}
>>> 

你有什么问题?你有什么问题?这有什么用?它解决了设定的问题,但没有MVP,我们不知道OP实际遇到了什么问题,如果是家庭作业问题,那么他们会有答案,但这剥夺了他们学习的机会。这个答案看起来很好,并产生了预期的结果。我想知道为什么@Noelkd认为这个问题不清楚。@Noelkd好吧,OP可以学习如何用一种字典方法来解决这类问题。这有什么用处?它解决了设定的问题,但没有MVP,我们不知道OP实际遇到了什么问题,如果是家庭作业问题,那么他们会有答案,但这剥夺了他们学习的机会。这个答案看起来很好,并产生了预期的结果。我想知道为什么@Noelkd认为这个问题不清楚。@Noelkd好吧,OP可以通过一个字典方法来学习如何解决这类问题。