如果key1不存在,Pythondict最简单,最干净的方法来获取key2的值

我有一个这样的python dict,

d = {
"k1" : "v1",
"k2" : "v2"
}

我想从 dict 中获取 k1 的值,我可以这样做,

d.get("k1")

但问题是,有时 k1 会出现在 dict 中。在这种情况下,我想从字典中选择 k2。我现在就这样做

val = d.get("k1", None)
if not val:
    val = d.get("k2", None)

我也可以这样做

if "k1" in d:
    val = d['k1']
else:
    val = d.get("k2", None)

这些解决方案看起来不错并且按预期工作,我想知道是否存在针对此问题的单行解决方案。

回答

Noned.get()指定如果没有找到该怎么做。

只需添加另一个d.get()而不是None.

d.get('k1', d.get('k2', None))
#'v1'


回答

一个d.getd.get

也许尝试双dict.get

val = d.get("k1", d.get("k2", None))

现在:

print(val)
print(val)
print(val)

将给予k1的价值,如果有一个k1k2的值,如果没有一个名为关键k1,但如果还没有一个k2,它给None

我的代码做了一个d.get,但是在参数里面你做了第二个参数None,在这种情况下我们做了另一个d.get,即 for k2,在第二个d.get它最终有第二个参数 as None,它只None在两个键都没有的情况下给出d

编辑:

如果有更多键(即k3k4...),只需添加更多d.gets:

val = d.get("k1", d.get("k2", d.get("k3", d.get("k4"))))

只需添加一个:

要输出它。

使用生成器next

您还可以使用生成器 withnext来获取第一个值,如下所示:

val = next((d[i] for i in ['k1', 'k2', 'k3', 'k4'...] if i in d), None)

现在:

也会给出正确的结果。

请记住添加 aNone以便如果这些键中的任何一个都没有任何值,则不会给出StopIteration.


以上是如果key1不存在,Pythondict最简单,最干净的方法来获取key2的值的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>