【问题标题】:Create dictionary using split() operation and list comprehension [closed]使用 split() 操作和列表理解创建字典 [关闭]
【发布时间】:2016-03-28 08:56:22
【问题描述】:

我想使用“列表理解”创建“字典”:

a_list = ['1, Lastoŭski', '2, Kupala', '3, Kolas'] 

到目前为止我尝试过的是:

d = {key: value for (key, value) in s.split(',') for s in a}

>>> NameError: name 's' is not defined

但这是完全错误的。你可以帮帮我吗?

【问题讨论】:

  • dict(s.split(', ') for s in a_list)

标签: python split list-comprehension


【解决方案1】:

正如@Delgan 所指出的,可以直接通过

d1 = dict(keyval.split(", ") for keyval in a_list)

没有内部嵌套:)

不正确的旧方法:-

d = [a.split(',') for a in a_list]
d1 = {key: val for key,val in d}

d1 = {key: val for key,val in (a.split(',') for a in a_list)}

【讨论】:

  • 无法理解投反对票。如果投反对票,请发表评论。
  • 您不需要嵌套列表/字典理解来解决问题。
  • @Delgan 明白了。谢谢
【解决方案2】:

不需要字典理解。你做的事情比它需要的更复杂;)。

a_list = ['1, Lastoŭski', '2, Kupala', '3, Kolas']
d = {}
for i in a_list:
    temp = i.split(', ')
    d[temp[0]] = temp[1]

print d
# returns: {'3': 'Kolas', '2': 'Kupala', '1': 'Lastoŭski'}

如果您需要列表理解,那么这就足够了:

d = dict((key, value) for key, value in [i.split(', ') for i in a_list])

你很接近,但你缺少括号

【讨论】:

  • 谢谢,但我正在研究Pythonfunctional 机会并想与comprehension 一起做
  • 您实际上是在让它变得更复杂。 ^^' d = dict(keyval.split(", ") for keyval in a_list) 工作得很好。
  • @Rudziankoŭ 已编辑
  • @Delgan 嘿,每天都会学到一些新东西 :)。我仍然不明白为什么我的答案被否决 - 它仍然是正确的
  • 确实是正确的,但不是正确的做法。所以 OP 会学到一些不准确的东西。
【解决方案3】:

试试这个:

 d = dict(map(str, x.split(',')) for x in a_list)

这会有所帮助。

【讨论】:

  • 无需致电map。 :)
  • 为什么要投反对票?如果您投反对票,请指出原因?
  • 如果它从列表中取出字典,为什么不呢?
  • str.split() 的结果已经是字符串的“列表”,因此再次将其转换为 str 是没有意义的。
猜你喜欢
  • 1970-01-01
  • 2016-06-09
  • 1970-01-01
  • 1970-01-01
  • 2019-01-16
  • 1970-01-01
  • 1970-01-01
  • 2010-12-17
相关资源
最近更新 更多