2012-03-09 71 views
1

让我们考虑将单个字典值从字符串转换为整数?

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': ''}. 
+1

你的代码中的'**'是什么意思? – citxx 2012-03-09 12:02:22

+0

它应该是大胆的 – San4ez 2012-03-09 12:05:14

+0

你如何建立这些字典?你应该在那里做转换。 – 2012-03-09 12:09:58

回答

6
$ 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'} 
+2

在s.items()中使用'for x,y'比对每个键执行三次查找会更好(稍微好一些)。另外,它可能更易读为dict理解:'{x:int(y)if y.isdigit()else y for x,y in s.items()}'。 – lvc 2012-03-09 12:20:28

+0

@lvc您的解决方案要好得多。谢谢 – kev 2012-03-09 12:26:06

+1

''-2'.isdigit()' - >'False' – warvariuc 2012-03-09 13:23:42

4
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)。