字典理解失败 - 没有足够的值来解包
dict comprehension failure - not enough values to unpack
我想从字符串列表创建字典:
print(l)
print(l[0]) # 1st string in list
print(l[0].split(',',1))
print(len(l[0].split(',',1)))
d = {int(k):v for k,v in l[0].split(',',1)}
['0,[7,2,5,7]', '1,[7,18,6,2]']
0,[7,2,5,7]
['0', '[7,2,5,7]']
2
但是,我得到 d = {int(k):v for k,v in l[0].split(',',1)} ValueError: not enough values to unpack (expected 2, got 1)
我不明白为什么,因为 l[0].split(',',1)
returns 2 个值,从我之前的检查可以看出 (print(len(l[0].split(',',1)))
returns 2)
我想要的输出:
d = {0 : [7,2,5,7]}
它 returns 两个值,但循环需要一个包含两个值的列表。
你有这个:[x, y]
但代码预期是这样的:[[x, y]]
你可以这样做:
from itertools import repeat
items = map(str.split, l, repeat(','), repeat(1))
d = {int(k):v for k,v in items}
请注意,您将获得所有数据,而不仅仅是一项。
您可能希望使用 ast.literal_eval
解析列表,因为当前它是一个字符串:
import ast
from itertools import repeat
items = map(str.split, l, repeat(','), repeat(1))
d = {int(k):ast.literal_eval(v) for k,v in items}
我想从字符串列表创建字典:
print(l)
print(l[0]) # 1st string in list
print(l[0].split(',',1))
print(len(l[0].split(',',1)))
d = {int(k):v for k,v in l[0].split(',',1)}
['0,[7,2,5,7]', '1,[7,18,6,2]']
0,[7,2,5,7]
['0', '[7,2,5,7]']
2
但是,我得到 d = {int(k):v for k,v in l[0].split(',',1)} ValueError: not enough values to unpack (expected 2, got 1)
我不明白为什么,因为 l[0].split(',',1)
returns 2 个值,从我之前的检查可以看出 (print(len(l[0].split(',',1)))
returns 2)
我想要的输出:
d = {0 : [7,2,5,7]}
它 returns 两个值,但循环需要一个包含两个值的列表。
你有这个:[x, y]
但代码预期是这样的:[[x, y]]
你可以这样做:
from itertools import repeat
items = map(str.split, l, repeat(','), repeat(1))
d = {int(k):v for k,v in items}
请注意,您将获得所有数据,而不仅仅是一项。
您可能希望使用 ast.literal_eval
解析列表,因为当前它是一个字符串:
import ast
from itertools import repeat
items = map(str.split, l, repeat(','), repeat(1))
d = {int(k):ast.literal_eval(v) for k,v in items}