为了账号安全,请及时绑定邮箱和手机立即绑定

Python 2.7:将具有重复值的2个列表放入字典中

Python 2.7:将具有重复值的2个列表放入字典中

蛊毒传说 2021-05-03 13:23:08
如果我有2个列表:fruits = ["apple","apple","oranges","watermelon","apple"]val = ["a","b","c","d","e"]val的每个索引对应于水果的索引因此,如果我想要具有以下内容的字典:dict{"apple" : ["a","b","e"],"oranges": ["c"],"watermelon": ["d"]}最简单的方法是什么?
查看完整描述

2 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

使用defaultdictwithlist工厂作为输出容器,并使用以下命令遍历两个列表zip:


In [162]: out = collections.defaultdict(list)


In [163]: for k, v in zip(fruits, val):

     ...:     out[k].append(v)

     ...:     


In [164]: out

Out[164]: 

defaultdict(list,

            {'apple': ['a', 'b', 'e'], 'oranges': ['c'], 'watermelon': ['d']})


In [165]: dict(out)

Out[165]: {'apple': ['a', 'b', 'e'], 'oranges': ['c'], 'watermelon': ['d']}


查看完整回答
反对 回复 2021-05-18
?
隔江千里

TA贡献1906条经验 获得超10个赞

您可以使用setdefault一个空列表初始化每个值,然后附加另一个列表中的值


fruits = ["apple","apple","oranges","watermelon","apple"]

val = ["a","b","c","d","e"]

d={}


for k, v in zip(fruits, val):

    d.setdefault(k, []).append(v) 


print(d)

# {'apple': ['a', 'b', 'e'], 'oranges': ['c'], 'watermelon': ['d']}


查看完整回答
反对 回复 2021-05-18
  • 2 回答
  • 0 关注
  • 208 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信