2012-03-09 6 views
1

は私が1つの辞書値を文字列から整数に変換していますか?

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

を取得する場合、私は

にそれを変更する必要があり、私は、

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

、あなたのコード内で '' **とはどういう意味ですか? – citxx

+0

太字になっています – San4ez

+0

どのようにそれらの辞書を構築していますか?あなたはおそらくそこに戻って変換を行うべきです。 –

答えて

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 'を使うのは、それぞれのキーに対して3つのルックアップを行うよりも(わずかに)良いでしょう。また、それはdictの理解としてより読みやすいかもしれません: '{x:int(y)if y.isdigit()else y for x、y in s.items()}'。 – lvc

+0

@lvcあなたのソリューションははるかに優れています。ありがとう – kev

+1

'' -2'.isdigit() ' - ' 'False' – warvariuc

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のような)別のデータ型です。

関連する問題