Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在dict中查找非空值_Python_Python 3.x_Dictionary - Fatal编程技术网

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]