我在python中有一本字典,例如:
输入=
{1:0, 2:0, 3:1, 4:1, 5:2, 6:3, 7:4, 8:4}
我希望输出只包含保留顺序的唯一值。
预期产出:
{1:0, 3:1, 5:2, 6:3, 7:4}
当我们在dict中找到相同的值时,除了只是循环数据并删除键值对之外,是否有一种简单的pythonic方式。
由于
答案 0 :(得分:1)
字典在python中没有顺序,所以你可能要考虑使用OrderedDict
>>> from collections import OrderedDict
>>> d = OrderedDict({1:0, 2:0, 3:1, 4:1, 5:2, 6:3, 7:4, 8:4})
>>> d
OrderedDict([(1, 0), (2, 0), (3, 1), (4, 1), (5, 2), (6, 3), (7, 4), (8, 4)])
>>> new_d = OrderedDict()
>>> for i, j in d.iteritems():
... if j in new_d.values(): continue
... new_d[i] = j
...
>>> new_d
OrderedDict([(1, 0), (3, 1), (5, 2), (6, 3), (7, 4)])
>>> dict(new_d)
{1: 0, 3: 1, 5: 2, 6: 3, 7: 4}
答案 1 :(得分:0)
您可以像这样迭代排序的键,抛出那些重复的键
d = {1:0, 2:0, 3:1, 4:1, 5:2, 6:3, 7:4, 8:4}
new_d = {}
for key, value in sorted(d.items()):
if value not in new_d.values():
new_d[key] = value
print new_d
>> {1: 0, 3: 1, 5: 2, 6: 3, 7: 4}