如何从字典中删除键值?

3

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个回答

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

1
有时在编写代码时,你需要退一步并尝试追求意图,而不是试图做某个具体的事情,从而忽略了整个大局。在Python中,有一个名为列表/字典推导式的功能,可以用它来过滤输入以获得所需的结果。因此,如果要过滤掉字典中所有值为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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接