【问题标题】:Dict into List Comprehension [duplicate]听写列表理解[重复]
【发布时间】:2018-10-17 21:11:39
【问题描述】:

这是我的字典和列表

d = {1: ['val1', 'val2'], 2: ['val3', 'val4']}
l = []

for key, value in d.items():
    for sub_value in value:
        l.append(sub_value)

print (l)

# ['val1', 'val2', 'val3', 'val4']


但是,我想用 dict 来列出理解。

我有这样的东西,

l = [sub_value for sub_value in value for key,value in d.items()]

也试过了,

l = [(sub_value for sub_value in value) for key,value in d.items()]

但是,并不是我想要的答案。

谢谢。

【问题讨论】:

  • 请注意,“dict into list comprehension”不是一回事。这是一个列表推导,它碰巧迭代一个 dict - 因此它不亚于列表推导。

标签: python python-3.x python-2.7 list-comprehension dictionary-comprehension


【解决方案1】:

你和第一个很接近;只是错误的顺序:

In [42]: [el for v in d.values() for el in v]
Out[42]: ['val1', 'val2', 'val3', 'val4']

【讨论】:

    【解决方案2】:

    我会第一个承认列表理解有时确实令人困惑:

    [sub_value for key,value in d.items() for sub_value in value]
    

    这给出了所需的输出。

    【讨论】:

    • 啊,只是移动订单可以在另一个 for 循环中使用 for 循环。谢谢。
    【解决方案3】:

    使用以下列表推导:

    l = [j for i in d for j in d[i]]
    

    >>> d = {1: ['val1', 'val2'], 2: ['val3', 'val4']}
    >>> l = [j for i in d for j in d[i]]
    >>> l
    ['val1', 'val2', 'val3', 'val4']
    >>> 
    

    【讨论】:

      猜你喜欢
      • 2017-11-09
      • 2011-06-15
      • 2016-01-04
      • 2012-12-20
      • 2019-08-13
      • 2016-10-20
      • 2020-03-11
      • 2014-03-26
      • 2016-05-02
      相关资源
      最近更新 更多