2017-08-31 83 views
0

我無法導出字符串值的總和。 雖然我能夠生成以下,如果有在整數形成:字典中列表的字符串值的總和

size = { 
    'serverA' : [10, 10], 
    'serverB' : [3, 3, 3], 
} 

如果我用sums = {k: sum(i for i in v if isinstance(i, int)) for k, v in size.items()},我會的,而不必在整數能夠獲得輸出如{'serverA': 20, 'serverB': 9}

然而,列表中的值,我得到的字符串如下:

size = { 
    'serverA' : ['10', '10'], 
    'serverB' : ['3', '3', '3'], 
} 

如果我用同樣的命令生成值的總和,而沒有錯誤,總和是明顯錯誤,其中輸出{'serverA': 0, 'serverB': 0}

回答

3

您可以使用map()的值映射到int S:

>>> {k: sum(map(int, v)) for k, v in size.items()} 
{'serverA': 20, 'serverB': 9} 

注意:如果你有不是整數的值,這將提高一個ValueError例外。
不太明白爲什麼你的基本情況下有isintance(i, int)

+0

不能打敗這個;-) – dawg

2

只需使用int(integer_string)

sums = {k: sum(int(i) for i in v) for k, v in size.items()} 

另外,請使用isinstance通常被認爲是一個反頭腦。如果你想檢查類型檢查Python 3.6 type annotations或使用不同的語言。

相關問題