按值查找字典的唯一性

时间:2014-01-28 10:23:01

标签: python dictionary

我在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方式。

由于

2 个答案:

答案 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}