关于python:用于检查2D嵌套内部字典中的键的单行代码

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是否它,如果它不存在。你可以看到从我的代码片段,在《inprefer放映,但你可能只是为易说。

1
2
if d.get(k1, {}).has_key(k2):
    # do something

如果你prefer,成语,但has_key方法已经deprecated表格不X:在Python,所以你可能要避免它。


你可以使用in

1
if k1 in d and k2 in d[k1]:

has_key方法deprecated冰和冰在Python 3.x.删除

相关:

  • "_ key()'或'吗?


在没有足够的声誉两个评论,但请注意,顶部的建议会失败如果KEY1冰没有价值。

1
2
if k2 in d.get(k1, {}):
    # do something

如果d = {'k1': None}fails酸性渣的价值是你的钥匙。


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>

不要使用has_key()使用get()AA has_key()已经deprecated在Python的表格不X::

1
d.get(k1,None) and d[k1].get(k2,None):