Python 在dict中查找非空值
我有这样一句话:Python 在dict中查找非空值,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,我有这样一句话: d = {'first':'', 'second':'', 'third':'value', 'fourth':''} 我想找到第一个非空值(在本例中是name,第三个)。可能有多个非空值,但我只想要找到的第一个 如何做到这一点?您可以使用next(字典是无序的-这在Python 3.6中有所改变,但目前这只是一个实现细节)来获取一个“非空”键值对: >>> next((k, v) for k, v in d.items() if v) ('third',
d = {'first':'', 'second':'', 'third':'value', 'fourth':''}
我想找到第一个非空值(在本例中是name,第三个)。可能有多个非空值,但我只想要找到的第一个
如何做到这一点?您可以使用
next
(字典是无序的-这在Python 3.6中有所改变,但目前这只是一个实现细节)来获取一个“非空”键值对:
>>> next((k, v) for k, v in d.items() if v)
('third', 'value')
使用保留元素顺序的
OrderedDict
。然后在它们上面循环,找到第一个不是空的:
from collections import OrderedDict
d = OrderedDict()
# fill d
for key, value in d.items():
if value:
print(key, " is not empty!")
像这样
def none_empty_finder(dict):
for e in dict:
if dict[e] != '':
return [e,dict[e]]
编辑1
注释中的
如果值为None
或'
我们最好使用如果v:
而不是如果v!=''代码><代码>如果v!=''代码>仅检查''
并跳过其他元素您可以找到空元素并列出它们:
non_empty_list = [(k,v) for k,v in a.items() if v]
当您说“first”时:您知道字典是无序的吗?@MSeifert是的,例如,该列表是无序的,我知道字典是不有序的。即使在Python 3.6中,这也只是一个实现细节,可能随时更改:“这个新实现的顺序保持方面被认为是一个实现细节,不应该依赖”@DeepSpace你是对的。我总是“忽略”它只是一个实现细节。现在把它们看作是有序的太方便了:)如果v:
,你可以键入,如果v是{},那么它会跳过
或无
或''
non_empty_list = [(k,v) for k,v in a.items() if v]