我有一本字典,其中的键是字符串列表(是数字),类似这样:
mydict = {'green': ['-1', '0'],
'orange': ['-1', '0', '9'],
'red': ['-1', '0'],
'yellow': ['0'],
'white': ['-1'],
'black': ['-1'],
'pink': ['-1']}
现在我想将值转换为整数,例如:
mydict = {'green': [-1, 0],
'orange': [-1, 0, 9],
'red': [-1, 0],
'yellow': [0],
'white': [-1],
'black': [-1],
'pink': [-1]}
我尝试使用列表理解
mydict_int =dict((k,int(v)) for k,v in mydict.items())
但是会引发错误:
TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'
答案 0 :(得分:3)
您不能直接将列表转换为int
,但可以通过列表理解来分别转换其元素:
mydict_int = dict((k, [int(s) for s in v]) for k,v in mydict.items())
答案 1 :(得分:1)
不仅要遍历字典键(顺便说一句,“ dict comprehension”语法更容易阅读),还要遍历每个字典值列表的 each 值:
mydict_int = { k : [int(value) for value in sequence] for k, sequence in mydict.items() }
您报告的异常来自尝试在int()
中而不是每个元素中传递整个列表本身。
答案 2 :(得分:1)
new = {}
for i in mydict:
new[i] = [int(k) for k in mydict[i]]
这是将字符串转换为整数的方法。但是这段代码假设列表中不会有任何非整数值
答案 3 :(得分:0)
您也可以将int
映射到列表中的每个元素:
{k: list(map(int, v)) for k, v in mydict.items()}