【问题标题】:Converting a single dictionary value from string to integer?将单个字典值从字符串转换为整数?
【发布时间】:2012-03-26 21:08:14
【问题描述】:

让我们考虑

set = {'a': '98', 'b': '10', 'c': 'nike', 'd': 'paarudas', 'e': '3'}

我想改成,

set = {'a': **98**, 'b': **10**, 'c': 'nike', 'd': 'paarudas', 'e': **3**}.

还有一个疑问,如果我得到了

set_1 = {'a': '98', 'b': '10', 'c': 'nike', 'd': 'paarudas', 'e': ''}

那我得改成

set_1 = {'a': **98**, 'b': **10**, 'c': 'nike', 'd': 'paarudas', 'e': ''}.

【问题讨论】:

  • 代码中的** 是什么意思?
  • 应该是粗体
  • 你如何建立这些字典?您可能应该在那里进行转换。

标签: python string dictionary int


【解决方案1】:
$ python3
>>> s = {'a': '98', 'b': '10', 'c': 'nike', 'd': 'paarudas', 'e': '3'}
>>> {k:int(v) if v.isdigit() else v for k,v in s.items()}
{'a': 98, 'c': 'nike', 'b': 10, 'e': 3, 'd': 'paarudas'}

【讨论】:

  • 使用for x,y in s.items() 会(稍微)好于对每个键进行三次查找。此外,作为 dict 理解,它可能更具可读性:{x: int(y) if y.isdigit() else y for x, y in s.items()}.
  • @lvc 您的解决方案要好得多。谢谢
  • 在我的情况下工作
【解决方案2】:
def int_if_possible(value):
    try: return int(value)
    except: return value

result = dict((k, int_if_possible(v)) for (k, v) in original.items())

请不要调用你的变量set;那是另一种数据类型(如dict)。

【讨论】:

    猜你喜欢
    • 2012-03-02
    • 2021-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-21
    • 1970-01-01
    • 2017-06-11
    • 2020-01-03
    相关资源
    最近更新 更多