将作为字符串列表的字典值转换为整数列表

时间:2019-02-15 16:46:38

标签: python

我有一本字典,其中的键是字符串列表(是数字),类似这样:

 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'

4 个答案:

答案 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()}