Single line of code to check for a key in a 2D nested inner dictionary
是否有单行方法来检查python 2d dict是否具有内部键/值?
现在我做这样的事情:
1 2 3 | if d.has_key(k1): if d[k1].has_key(k2): # do something |
有更好的方法吗?
谢谢
1 2 | if k2 in d.get(k1, {}): # do something |
以上片段的冰,好的,如果你不在乎我是否K1和是否或不只是想知道是否在K2是否它,如果它不存在。你可以看到从我的代码片段,在《
1 2 | if d.get(k1, {}).has_key(k2): # do something |
如果你prefer,成语,但
你可以使用
1 | if k1 in d and k2 in d[k1]: |
《
相关:
- "_ key()'或'吗?
在没有足够的声誉两个评论,但请注意,顶部的建议会失败如果KEY1冰没有价值。
1 2 | if k2 in d.get(k1, {}): # do something |
如果
1 | if d.has_key(k1) and d[k1].has_key(k2): |
答案你的第一个问题是,是的。在考虑以利的答案
1 | if k2 in d.get(k1, {}): |
最好的一笔,为它找avoids IP K1 d两次。答案取决于你的第二个问题-什么你想做的,如果它的测试fails如果你想做一些不同的双故障的情况。如果母猪:
1 2 3 4 5 6 7 8 | try: d1 = d[k1] if k2 in d1: <both tests passed> else: <second test failed> except KeyError: <first test failed> |
不要使用
1 | d.get(k1,None) and d[k1].get(k2,None): |