python - 正确地从嵌套字典中获取数据,必须有更好的方法

标签 python dictionary

我经常遇到这个问题,希望有人有一个优雅的解决方案...

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/

相关文章:

python - 用于异步周期性任务的 Django channel

python - 为 Python 函数的字典列表指定参数类型

javascript - 如何并排显示 map ?

string - 如何在 Golang 中将映射解压缩为字符串格式的关键字参数?

python - 程序如何在python中的两个函数之间进行选择?

python - Pandas 数据框描述给出了 float 数据类型的平均值和标准差的 nan 值

python - 有没有办法围绕一个圆圈(或在圆圈内)旋转文本?

python - 'Connection aborted .', ConnectionResetError(104, ' Connection reset by peer')通过 Python 将 Selenium 与 ChromeDriver 和 Chrome 结合使用

java - 是否有一个 Java 集合或列表可以在给定对象值的情况下返回对象键?

python - 如何在 google appengine 上持久化一个 python 字典