【问题标题】:Is there a compact way to unpack some values from a dictionary in Python? [duplicate]是否有一种紧凑的方法可以从 Python 中的字典中解压缩一些值? [复制]
【发布时间】:2021-12-31 02:34:37
【问题描述】:

我在代码中多次遇到当前情况。我定义了一个字典。

params = {
    'color': 'green',
    'xlim': (0, 250),
    'ylim': (0, 10),
    'ylabel': 'the label',
    'xlabel': 'time'
}

然后,在一些函数的定义中,我从上面的字典中解压一些值到一个元组中

color, ylim, ylabel, xlabel = params['color'], params['ylim'], params['ylabel'], params['xlabel']   

我想应该有更好的方法来进行这种拆包。所以我尝试了以下

color, ylim, ylabel, xlabel = params['color','ylim','ylabel','xlabel']

但它给出了一个错误。

KeyError: ('color', 'ylim', 'ylabel', 'xlabel')

所以,我的问题是

  • 有没有更简洁的方法从 Python 中的字典中解压缩 一些值
  • 像这样解压字典是一种不好的做法吗?

【问题讨论】:

  • 感谢您让我知道**。我正在阅读它,看看它是否有帮助。

标签: python dictionary iterable-unpacking


【解决方案1】:

你可以这样做:

params = {
    'color': 'green',
    'xlim': (0, 250),
    'ylim': (0, 10),
    'ylabel': 'the label',
    'xlabel': 'time'
}
color, ylim, ylabel, xlabel = (params[x] for x in ('color', 'ylim', 'ylabel', 'xlabel'))
print(color)

输出:

green

【讨论】:

  • 是的,列出(元组?)推导!我忘了他们。你觉得我的第二个问题怎么样?
  • @sfx 这实际上是一个generator expression
  • 没关系。如果您大量使用字典值,则会有很多开销输入。有时我希望字典有一个(附加的)“点符号”。只需params.color
  • @MauriceMeyer 我发现this answer 关于“点符号”。确实可能会更好。
  • @sfx: 是的,对于平面字典,这很好,但不适用于嵌套字典。
猜你喜欢
  • 2016-09-12
  • 2017-12-23
  • 1970-01-01
  • 1970-01-01
  • 2019-08-15
  • 2015-09-30
  • 1970-01-01
  • 1970-01-01
  • 2021-11-21
相关资源
最近更新 更多