Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将作为字符串列表的字典值转换为整数列表_Python - Fatal编程技术网

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

Python 将作为字符串列表的字典值转换为整数列表,python,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

我有一个字典,其中的键是字符串列表(即数字),类似于:

 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'

您不能直接将列表转换为
int
,但可以使用列表理解单独转换其元素:

mydict_int = dict((k, [int(s) for s in v]) for k,v in mydict.items())

您不能直接将列表转换为
int
,但可以使用列表理解单独转换其元素:

mydict_int = dict((k, [int(s) for s in v]) for k,v in mydict.items())

您不仅需要迭代字典键(顺便说一句,“dict comprehension”语法更易于阅读),还需要迭代每个字典值列表中的每个值:

mydict_int = { k : [int(value) for value in sequence]   for k, sequence in mydict.items() }

您报告的例外情况来自尝试在
int()
中传递整个列表本身,而不是每个元素。

您不仅要迭代字典键(顺便说一句,“dict comprehension”语法更容易阅读),还要迭代每个字典值列表的每个值:

mydict_int = { k : [int(value) for value in sequence]   for k, sequence in mydict.items() }
new = {}
for i in mydict:
    new[i] = [int(k) for k in mydict[i]]
您报告的异常来自尝试在
int()
中传递整个列表本身,而不是每个元素

new = {}
for i in mydict:
    new[i] = [int(k) for k in mydict[i]]
这就是如何将字符串转换为整数的方法。但是这段代码假设列表中没有任何非整数值


这就是如何将字符串转换为整数的方法。但此代码假定列表中没有任何非整数值

您也可以将
int
映射到列表中的每个元素:


{k:list(映射(int,v))在mydict.items()中的k,v
您还可以将
int
映射到列表中的每个元素:


mydict.items()中k,v的
{k:list(map(int,v))

{k:[…]for…}
(但您的方式更接近OP的原始代码,因此仅显示必要的更改)或
{k:[…]for…}
(但您的方式更接近OP的原始代码,因此仅显示必要的更改)
new dict={key:[int(x)对于键,val在mydict.items()中的val}
typecast v元素而不是整个v列表。
new_dict={key:[int(x)对于键,val在mydict.items()中的val}
typecast v元素而不是整个v列表。