如何将所有合适的值转换为int

时间:2015-09-10 05:59:51

标签: python

我有一个大约1亿个键/值对的大字典。

我想转换所有可以轻松转换为int的值。

例如,如果我从:

开始
b = {'one': '001', 'two': 2, 'three': 'three'}

我希望结果是

b2 = {'one': 1, 'two': 2, 'three': 'three'}

如果我只是迭代b并将所有值转换为int,那么当它到达三个时会出错。

怎么能这样做?

2 个答案:

答案 0 :(得分:3)

传入try/except时,您可以使用int()来捕获three引发的ValueError。示例 -

b2 = {}
for k,v in b.items():
    try:
        b2[k] = int(v)
    except ValueError:
        b2[k] = v

你应该注意,这也会将浮点数截断为整数,但我猜这是预期的行为。

演示 -

>>> b = {'one': '001', 'two': 2, 'three': 'three'}
>>> b2 = {}
>>> for k,v in b.items():
...     try:
...         b2[k] = int(v)
...     except ValueError:
...         b2[k] = v
...
>>> b2
{'one': 1, 'two': 2, 'three': 'three'}

答案 1 :(得分:1)

虽然也许有点unpythonic你可以在转换前测试是否是数字:

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