2012-03-09 69 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)。