我有这样的字典:
{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循环完成,但还有其他方法吗?
答案 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()}