如何删除字典中的键值?

时间:2014-04-10 02:49:08

标签: python list sorting dictionary set

Python语言。

我知道如何删除字典中的键,例如:

def remove_zeros(dict)
    dict = {'B': 0, 'C': 7, 'A': 1, 'D': 0, 'E': 5}
    del dict[5]
    return dict

我想知道如何从字典中删除零的所有值,然后按字母顺序对键进行排序。使用上面的例子,我想得到['A','C','E'],完全消除键值B和D.

要排序,我只使用dict.sort()?

我必须使用特殊功能吗?

2 个答案:

答案 0 :(得分:2)

sorted(k for (k, v) in D.iteritems() if v)

答案 1 :(得分:1)

有时,当你编码时,你必须退后一步,试着去寻求你的意图,而不是试图做一件具体的事情而错过整个大局。在python中,您有一个名为list / dictionary comprehension的功能,您可以使用它来过滤输入以获得所需的结果。因此,您希望过滤掉字典中0的所有值,它只是这样:

{k, v for k, v in d.items() if v != 0}

现在,字典是哈希表,默认情况下它们不可排序,但是有一个类可以帮助你在collections中使用它。使用OrderedDict类来促进排序,代码最终将如下所示:

OrderedDict(sorted(((k, v) for k, v in d.items() if v != 0)), key=lambda t: t[0])

此外,使用与内置类型或方法相同的名称来命名变量是非常不可取的,例如dict

相关问题