我经常遇到这个问题,希望有人有一个优雅的解决方案...
x = {'a':1, 'b':{'c':2}}
现在:
x.get('a', None) = 1
x.get('b', None).get('c', None) = 2
关于:
x.get('a', None).get('c', None) =
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-5-278862f593e8> in <module>()
----> 1 x.get('a', None).get('c')
AttributeError: 'int' object has no attribute 'get'
#
是否有一个简单的 pythonic 单行代码来处理这样的情况? (不使用一堆 if 语句)
谢谢!
#
感谢所有评论/反馈。我正在寻找一种优雅的单线,因为我经常遇到这种情况。显然这是一个玩具示例,其构建只是为了解释问题。我宁愿不使用 try/catch block 或将代码包装在长 if 语句中。谢谢!
最佳答案
访问嵌套字典键的常用语法是:
>>> x = {'a':1, 'b':{'c':2}}
>>> x['b']['c']
2
>>> x['b']['c'] = 100
>>> x['b']['c']
100
这将在缺少键时抛出键错误:
>>> x['b']['d']
...
KeyError: 'd'
您可以将其包装在 try-catch 中:
>>> try:
... x['b']['d']
... except KeyError as err:
... # do something when no key is present ...
... pass
如果您正在寻找一种“捕捉所有不存在的键并始终做正确的事情”的解决方案,我想您将不得不围绕您的特定数据结构编写一些薄的包装器。
关于python - 正确地从嵌套字典中获取数据,必须有更好的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20331987/