我按照以下顺序排版。该词典是使用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)]}
答案 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()}
现在还处理列表值中的每个元组,但元组中的每个字符串都转换为整数,而不是尝试将整个元组对象转换为整数。