【发布时间】:2020-04-25 11:54:18
【问题描述】:
注意:建议的答案都不适合我,因为它们是 for-loop 驱动的(我已经在工作了)并且不解释列表理解版本有什么问题。
我正在尝试转变
('name:80', 'desc:100')
进入
{'name': 80, 'desc': 100}
一个工作的for-loop:
new_wrap = {}
for item in wrap:
k, v = item.split(':')
new_wrap[k] = int(v)
wrap = new_wrap
一个非工作列表理解:
wrap = dict([
(k, int(v))
for item in wrap
for (k, v) in item.split(':')
])
给了
Traceback (most recent call last):
File ..., line ..., in ...
for (k, v) in item.split(':')
ValueError: too many values to unpack
我做错了什么?
【问题讨论】:
-
dict(map('{:s}:{:d}'.parse, wrap))。我希望! :)(甚至不是开玩笑,我本可以经常使用) -
@StefanPochmann 实际上,您可以通过parse 获得非常接近的结果。它不会在
str上修补方法,但它会很好:dict(parse('{}:{:d}', w).fixed for w in wrap) -
@wim 很好,尽管我认为大多数情况对我来说都是如此,我不想告诉人们安装它(除非字符串解析是他们的问题所在)。