获取一个字典,其键是给定字典的组合,没有重复值

时间:2013-11-21 10:56:13

标签: python

我有这样的字典:

dic = {'01':[1,2], '02':[1], '03':[2,3]}

我想要实现的是一个新的dict,它的键是键的组合(仅限2组),没有重复值。 在这个简单的例子中,输出将是:

newDic = {'0102':[1,2], '0103':[1,2,3],'0203':[1,2,3]}

感谢一帮!!

2 个答案:

答案 0 :(得分:1)

您可以使用itertools.combinations来获取不同的键组合。然后使用set获取列表的唯一值。把它全部放到这样的dictionary-comprehension中:

>>> dic = {'01':[1,2], '02':[1], '03':[2,3]}
>>> import itertools as IT
>>> {a+b: list(set(dic[a]+dic[b])) for a,b in IT.combinations(dic, 2)}
{'0203': [1, 2, 3], '0301': [1, 2, 3], '0201': [1, 2]}

您还可以使用joinsorted按键获得所需的密钥:

>>> {''.join(sorted([a,b])): list(set(dic[a]+dic[b])) for a,b in IT.combinations(dic, 2)}
{'0203': [1, 2, 3], '0103': [1, 2, 3], '0102': [1, 2]}

答案 1 :(得分:0)

newDic = { a+b : list(set(dic[a] + dic[b])) for a in dic for b in dic if b>a }