【问题标题】:list comphrension on nested distionary [duplicate]嵌套字典上的列表理解[重复]
【发布时间】:2019-10-23 22:03:12
【问题描述】:

我有一个像这样的python dict:

tt={'plot1':[
      {'var': 'ok__you', 'uuid': '98782098109'},
      {'var': 'hdg__akj', 'uuid': '712837901'}
      ], 
    'plot2': [
      {'var': 'ok__you2', 'uuid': '987820981092'},
      {'var': 'hdg__akj2', 'uuid': '7128379012'}
    ]}

我正在尝试将所有 uuids 放入一个列表中,所以,我这样做了:

lst=[v_i['uuid'] for v_i in value for key,value in tt.items()]

然后我被扔了:

NameError: name 'value' is not defined

我不知道为什么会这样 - 我在 tt.items() 迭代中指定了 value - 不知道为什么会抛出这个错误?

希望有任何提示!

【问题讨论】:

  • lst = [k['uuid'] for k in tt for k in tt[k]]

标签: python python-3.x


【解决方案1】:

你交换了两个 for 循环的顺序

lst=[v_i['uuid'] for key,value in tt.items() for v_i in value]

然后输出将是

['98782098109', '712837901', '987820981092', '7128379012']

此外,由于您没有使用密钥,您可以只迭代字典的值

lst=[v_i['uuid'] for value in tt.values() for v_i in value]

【讨论】:

  • 谢谢 Davesh - 可能是因为我今天工作有点晚了 :)
  • 别担心@JohnJ :) 这发生在我们最好的人身上,如果答案对您有帮助,请考虑将其标记为已接受 :)
猜你喜欢
  • 1970-01-01
  • 2021-02-23
  • 2021-12-22
  • 1970-01-01
  • 2016-12-25
  • 2013-11-15
  • 1970-01-01
  • 2020-12-21
  • 2021-05-02
相关资源
最近更新 更多