2013-11-23 164 views
0

一本字典,我有以下字典如何更新蟒蛇

>>> {'a':3, 'i': 1, 'k': 1, 'm': 1, 'l': 1, 'n': 1, 'p': 1, 'u': 1} 

我怎樣才能將其更新到,

>>> updateDict({'a':3, 'i': 1, 'k': 1, 'm': 1, 'l': 1, 'n': 1, 'p': 1, 'u': 1}, 
        milk), 

使得輸出

{'a':3, 'i': 0, 'k': 0, 'm': 0, 'l': 0, 'n': 1, 'p': 1, 'u': 1} 

+0

所以,你想知道如何輸入一個字符串和所有的字符串中的字母都將其值更新爲0? – thefourtheye

+0

newDict = Dict.copy() updateDict = newDict(Dict,word) return updateDict – user3023315

回答

0

對於字符串中的每個字符都會從字典中獲取相應的值,然後遞減該值並重新插入它。

3

'milk' 0復位鍵:

In [14]: d = {'a':3, 'i': 1, 'k': 1, 'm': 1, 'l': 1, 'n': 1, 'p': 1, 'u': 1 } 

In [15]: d.update(dict.fromkeys(list('milk'), 0)) 

In [16]: d 
Out[16]: {'a': 3, 'i': 0, 'k': 0, 'l': 0, 'm': 0, 'n': 1, 'p': 1, 'u': 1} 

要減1在'milk'鍵,你可以使用一個循環,在mitchelllc's answer。或者,如果你願意消除的0值的鍵,你可以使用一個collections.Counter這樣的:

import collections 

d = collections.Counter({'a':3, 'i': 1, 'k': 1, 'm': 1, 'l': 1, 'n': 1, 'p': 1, 'u': 1 }) 

m = collections.Counter(list('milk')) 

print(d - m) 

產生

Counter({'a': 3, 'p': 1, 'u': 1, 'n': 1}) 
+0

'list'在這裏是多餘的。 – jfs

+0

確實如此,但由於OP的實際字典可能具有多字符鍵,所以列表形式可能具有更多的實用價值。 – unutbu

+0

'list'不會以任何方式改變結果。 – jfs

0

試試這個:

s = 'milk' 
d = {'a':3, 'i': 1, 'k': 1, 'm': 1, 'l': 1, 'n': 1, 'p': 1, 'u': 1 } 
for letter in s: 
    if letter in d: 
     d[letter] = 0 
1
>>> dict = {'a':3, 'i': 0, 'k': 0, 'm': 0, 'l': 0, 'n': 1, 'p': 1, 'u': 1} 
>>> for s in 'milk': 
>>> if s in dict: 
>>>  dict[s] -= 1 

如果你想在字典中設置'牛奶'爲零,請參閱@ unutbu的答案。