2013-11-23 136 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的答案。