繁体   English   中英

通过字典中的键计算值

[英]Count values by key in dictionary

我正在寻找可以自动计算dict中值的东西而无需使用元素列表

d = {}

d["x1"] = "1"
{'x1':'1'}

d["x1"] = "2"
{'x1':'2'}

d["x1"] = "3"
{'x1':'3'}

d["x2"] = "1"
{'x1':'3', 'x2':'1'}

等..

我尝试使用创建一个列表

for x in list:
    d[x] = list.count(x)

但是当我创建一个列表时,我收到一个内存错误

您确定要使用dict来执行此操作吗? 似乎Counterdefaultdict更适合您的需求。

>>> d = collections.Counter()
>>> d['x1'] += 1
>>> d
Counter({'x1': 1})
>>> d['x1'] += 1
>>> d
Counter({'x1': 2})
>>> d['x2'] += 1
>>> d
Counter({'x1': 2, 'x2': 1})

您还可以将序列转换为计数器:

>>> collections.Counter(['x1', 'x1', 'x2'])
Counter({'x1': 2, 'x2': 1})

使用defaultdict

>>> d = defaultdict(int)
>>> d['foo'] += 1
>>> d['foo'] += 1
>>> d['bar'] += 1
>>> for i in d:
...   print i,d[i]
... 
foo 2
bar 1

您可以按以下方式使用dict

d['x1'] = d.get('x1', 0) + 1

get的第二个参数指定如果找不到第一个参数中提供的键,则返回的对象。

将其应用于您的示例:

from pprint import pprint
d = {}
d['x1'] = d.get('x1', 0) + 1
d['x1'] = d.get('x1', 0) + 1
d['x1'] = d.get('x1', 0) + 1
d['x2'] = d.get('x2', 0) + 1
pprint(d)    # will print {'x1': 3, 'x2': 1}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM