如何在python中更新字典

时间:2013-11-23 20:32:32

标签: python dictionary

我有以下字典

>>> {'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}

4 个答案:

答案 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}

要将'milk'中的键减1,可以使用循环,如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})

答案 1 :(得分: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

如果你想在dict中将'milk'设置为零,请参阅@ unutbu的答案。

答案 2 :(得分:0)

对于字符串中的每个字符,从字典中获取相应的值,递减该值,然后重新插入。

答案 3 :(得分: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