如果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)
这些解决方案看起来不错并且按预期工作,我想知道是否存在针对此问题的单行解决方案。
回答
将None在d.get()指定如果没有找到该怎么做。
只需添加另一个d.get()而不是None.
d.get('k1', d.get('k2', None))
#'v1'
回答
一个d.get内d.get:
也许尝试双dict.get:
val = d.get("k1", d.get("k2", None))
现在:
print(val)
print(val)
print(val)
将给予k1的价值,如果有一个k1和k2的值,如果没有一个名为关键k1,但如果还没有一个k2,它给None。
我的代码做了一个d.get,但是在参数里面你做了第二个参数None,在这种情况下我们做了另一个d.get,即 for k2,在第二个d.get它最终有第二个参数 as None,它只None在两个键都没有的情况下给出d。
编辑:
如果有更多键(即k3,k4...),只需添加更多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.
THE END
二维码