是否有单行方法来检查 Python 2d dict 是否具有内部键/值?
现在我做这样的事情:
if d.has_key(k1):
if d[k1].has_key(k2):
# do something
有一个更好的方法吗?
谢谢
是否有单行方法来检查 Python 2d dict 是否具有内部键/值?
现在我做这样的事情:
if d.has_key(k1):
if d[k1].has_key(k2):
# do something
有一个更好的方法吗?
谢谢
if k2 in d.get(k1, {}):
# do something
如果您不关心 k1 是否实际存在,而只想知道 k2 是否存在,那么上面的片段很好。正如您从我的代码片段中看到的,我更喜欢in
运算符,但您也可以简单地说
if d.get(k1, {}).has_key(k2):
# do something
如果您更喜欢该习惯用法,但该has_key
方法在 Python 3.x 中已被弃用,因此您可能应该避免使用它。
我没有足够的声誉来发表评论,但请注意,如果 key1 的值为 None,那么最重要的建议将失败。
if k2 in d.get(k1, {}):
# do something
如果d = {'k1': None}
是这样,请确保您的密钥的值失败。
if d.has_key(k1) and d[k1].has_key(k2):
你的第一个问题的答案是肯定的。我考虑伊莱的回答
if k2 in d.get(k1, {}):
最好的一个衬里,因为它避免在 d 中查找 k1 两次。第二个问题的答案取决于如果任一测试失败以及您想在两种失败情况下做不同的事情,您想做什么。如果是这样的话:
try:
d1 = d[k1]
if k2 in d1:
<both tests passed>
else:
<second test failed>
except KeyError:
<first test failed>
不要has_key()
使用在 python 3.xget()
中has_key()
已弃用的 use :
d.get(k1,None) and d[k1].get(k2,None):