【问题标题】:Can I avoid such cumbersome list comprehension [duplicate]我可以避免这种繁琐的列表理解吗?
【发布时间】:2016-04-14 17:29:46
【问题描述】:

有一个列表,其中包含以下数据,

a = ['key1=value1','key2=value2','key3=value3',...,'key100=value100']

我写了下面的代码,它将列表转换为一行中的一个字典,

b = dict((list(item.split('='))[0], list(item.split('='))[1]) for item in a

(我的 Python 版本是 2.6,不支持字典理解。)

我的问题:
有没有办法重写代码,更简洁?例如,

b=dict(x,y) for item.split('=') in a       [WRONG]

我觉得list(item.split('='))[0]list(item.split('='))[1]真的很麻烦。

[更新]
@TigerhawkT3,链接Alternative to dict comprehension prior to Python 2.7 没有解决我的问题,因为我的问题与学习如何在 Python 2.7 之前编写字典理解无关。

【问题讨论】:

  • 为什么不dict([x.split('=') for x in a])
  • 与 Henriks 类似:b = dict(item.split("=") for item in a)。在 python 2.7 中运行不确定 2.6 是否需要`[]。灵感来自here

标签: python list-comprehension


【解决方案1】:

字典可以是initialized,带有一个可迭代对象,返回的可迭代对象恰好包含两个对象。应该这样做:

d = dict([item.split('=', 1) for item in a])

或者,您可以使用map()

d = dict(map(lambda item: item.split("=", 1), a))

【讨论】:

    猜你喜欢
    • 2011-03-19
    • 2011-02-11
    • 1970-01-01
    • 2015-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多