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()?
我必须使用特殊功能吗?
答案 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
。