Python - 将字符串键转换为整数

时间:2015-07-07 14:03:00

标签: python dictionary

我按照以下顺序排版。该词典是使用from collections import defaultdict

动态生成的
Ref = defaultdict(<type 'list'>, {'344': [('0', '0', '136'), 
('548', '136', '137'), 
('548', '136', '6')],        
'345': [('0', '0', '136'), ('548', '136', '137'), 
('548', '136', '6'), 
('742', '136', '6')]}

我尝试了什么:

来自here

Ref = {int(k):[int(i) for i in v] for k,v in Ref.items()}

但是我收到了错误:

TypeError: int() argument must be a string or a number, not 'tuple'

我想要的是什么:

我想将字符串中的所有键和值转换为整数,如

Ref = defaultdict(<type 'list'>, {344: [(0, 0, 136), 
    (548, 136, 137), 
    (548, 136, 6)],        
    345: [(0, 0, 136), (548, 136, 137), 
    (548, 136, 6), 
    (742, 136, 6)]}

2 个答案:

答案 0 :(得分:4)

您的值是列表,并且项目是您将元组项目转换为int所需的元组,您可以使用map函数:

Ref = {int(k):[map(int,i) for i in v] for k,v in Ref.items()}

如果你在python 3中,你可以在tuple中使用生成器表达式:

Ref = {int(k):[tuple(int(t) for t in i) for i in v] for k,v in Ref.items()}

此外,如果您希望结果为元组,map会返回一个列表,您也可以使用此配方。

答案 1 :(得分:2)

您正在尝试转换值和值中的元组。您的问题标题建议您只想转换密钥:

Ref = {int(key): value for key, value in Ref.items()}

这使得价值保持不变。请注意,这会将defaultdict实例替换为新的普通dict对象。

您的输出表明您还希望将元组中的值转换为整数。循环遍历元组:

Ref = {int(key): [tuple(int(i) for i in t) for t in value]
       for key, value in Ref.items()}

现在还处理列表值中的每个元组,但元组中的每个字符串都转换为整数,而不是尝试将整个元组对象转换为整数。