如何将具有重复键和值的元组列表转换为花哨的dicionary?

时间:2016-08-04 04:13:09

标签: python dictionary

我有一个像下面的代码一样的元组列表,标识符有多个值(标识符和值都可能重复),我想使用dict作为键str和{{1因为它的价值是合理的,但是怎么样?

set

我需要的是这样的:tuple_list = [ ('id1', 123), ('id1', 123), ('id2', 123), ('id1', 456), ('id2', 456), ('id1', 789), ('id2', 789) ] ,...}`,我的代码是:

{ 'id1': {123, 456, 789}

2 个答案:

答案 0 :(得分:1)

您可以使用setdefaultdict

map_data = {}
for id, val in tuple_list:
    map_data.setdefault(id,set()).add(val)

答案 1 :(得分:1)

要使用包含dict的{​​{1}},请执行此操作。

set

结果

from collections import defaultdict

tuple_list = [
    ('id1', 123),
    ('id1', 123),
    ('id2', 123),
    ('id1', 456),
    ('id2', 456),
    ('id1', 789),
    ('id2', 789)
]

map_data = defaultdict(set)

for id, val in tuple_list:
    map_data[id].add(val)

print(map_data)