3 回答

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個(gè)贊
雖然我這樣做的方式不是很有效,但是通過遍歷字典并檢查值time和data鍵的值是否相同以進(jìn)行計(jì)數(shù)是可行的:
data = [
{'time': 10, 'data': 'abcd'},
{'time': 10, 'data': 'abcd'},
{'time': 11, 'data': 'bcd'},
{'time': 12, 'data': 'dc'},
{'time': 13, 'data': 'ak'},
{'time': 11, 'data': 'bcd'}
]
data_counted = []
for d in data:
for d_c in data_counted:
if d['time'] == d_c['time'] and d['data'] == d_c['data']:
d_c['count'] += 1
break
else:
d_new = d.copy()
d_new['count'] = 1
data_counted.append(d_new)
print(data_counted)
[{'time': 10, 'data': 'abcd', 'count': 2},
{'time': 11, 'data': 'bcd', 'count': 2},
{'time': 12, 'data': 'dc', 'count': 1},
{'time': 13, 'data': 'ak', 'count': 1}]

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以使用itertools.groupby
對(duì)具有相同data
值的字典進(jìn)行分組:
from itertools import groupby
def keyFunc(d):
return d['data']
def merge(*dicts):
return {**dicts[0], 'count': len(dicts)}
merged = [merge(*g) for i, g in groupby(sorted(data, key=keyFunc), key=keyFunc)]
print(merged)
結(jié)果merged字典將是:
[
{'count': 2, 'data': 'abcd', 'time': 10},
{'count': 1, 'data': 'ak', 'time': 13},
{'count': 2, 'data': 'bcd', 'time': 11},
{'count': 1, 'data': 'dc', 'time': 12}
]

TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個(gè)贊
我不確定這有多有效,但它應(yīng)該可以完成工作。
data = [
{'time': 10, 'data': 'abcd'},
{'time': 10, 'data': 'abcd'},
{'time': 11, 'data': 'bcd'},
{'time': 12, 'data': 'dc'},
{'time': 13, 'data': 'ak'},
{'time': 11, 'data': 'bcd'},
]
temp = {}
for i in data:
s = "{}-{}".format(i['time'], i['data'])
i['count'] = 1
if (s not in temp.keys()):
temp[s] = i
else:
temp[s]['count'] += 1
data = [temp[i] for i in temp.keys()]
print(data)
[{'count': 2, 'data': 'abcd', 'time': 10},
{'count': 2, 'data': 'bcd', 'time': 11},
{'count': 1, 'data': 'dc', 'time': 12},
{'count': 1, 'data': 'ak', 'time': 13}]
添加回答
舉報(bào)