NB:建议的答案都不适用于我,因为它们适用于循环驱动(我已经有了工作),并且没有解释列表理解版本的错误
我正在努力改变
('name:80', 'desc:100')
进入
{'name': 80, 'desc': 100}
工作for
循环:
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
我做错了什么
您应该将拆分与转换为整型分开:
但是,正如roganjosh正确地建议的那样,你从中一无所获
如果您希望坚持一个层次的理解,并且不介意使用Python 3.8+,那么您可以使用赋值表达式将拆分结果保存在一个用于索引的变量中:
你不想在^{上迭代,你想解压它。为此,可以引入嵌套的理解表达式或生成器表达式。这使您有机会创建新变量
k
和v
:然后我会去掉方括号。更有效的方法是使用一个生成器表达式动态生成条目,而不是使用一个列表理解在内存中构建一个完整的列表,以便在创建dict时将其丢弃
通过使用带花括号的dict理解,您可以进一步简化它:
相关问题 更多 >
编程相关推荐