尝试通过字典理解将字典中的所有值转换为int

时间:2016-08-03 15:55:23

标签: python dictionary dictionary-comprehension

我有这样的字典:

{1: 'rattle', 2: '204', 3: 'three', 4: 404, 5: '104', 6: 'pythonic'}

我希望尽可能通过字典理解将所有值转换为整数。所以我想要这个:

{1: 'rattle', 2: 204, 3: 'three', 4: 404, 5: 104, 6: 'pythonic'}

我试过了:

{i: int(m[i]) for i in m if type(m[i]) == str and m[i].isdigit()}

但它只包含那些字符串值,可以转换为整数。我也尝试将整个事情放在试试中,但它没有用

我知道这可以通过简单的for循环完成,但还有其他方法吗?

2 个答案:

答案 0 :(得分:2)

通过在循环结尾添加if,您过滤,将输出限制为键值对,其中值为字符串且由数字组成。

在值表达式中使用条件表达式;这样你就可以保留所有键值对,但只将int()应用于值很重要的值,并将其余值保持不变:

{k: int(v) if isinstance(v, str) and v.isdigit() else v for k, v in m.items()}

我使用m来一次性获取密钥和相应的值,而不是仅仅迭代dict.items()(并且仅获取密钥)。

答案 1 :(得分:1)

{k: int(v) if str(v).isdigit() else v for k, v in m.items()}