亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

保持計數并將其附加到 python 中的列表

保持計數并將其附加到 python 中的列表

元芳怎么了 2022-11-29 15:17:28
我有一個看起來像這樣的列表。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'}我需要計算相同的數據對象并保持數據計數。我期待這樣的輸出。Expected Output:data = [      {'time': 10, 'data': 'abcd','count' : 2}      {'time': 11, 'data': 'bcd','count' : 2}      {'time': 12, 'data': 'dc','count' : 1}      {'time': 13, 'data': 'ak','count' : 1}可能嗎 ?我正在嘗試在 python 中執行此操作。
查看完整描述

3 回答

?
人到中年有點甜

TA貢獻1895條經驗 獲得超7個贊

雖然我這樣做的方式不是很有效,但是通過遍歷字典并檢查值time和data鍵的值是否相同以進行計數是可行的:


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}]


查看完整回答
反對 回復 2022-11-29
?
波斯汪

TA貢獻1811條經驗 獲得超4個贊

您可以使用itertools.groupby對具有相同data值的字典進行分組:

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)

結果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}

]


查看完整回答
反對 回復 2022-11-29
?
白板的微信

TA貢獻1883條經驗 獲得超3個贊

我不確定這有多有效,但它應該可以完成工作。


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}] 


查看完整回答
反對 回復 2022-11-29
  • 3 回答
  • 0 關注
  • 109 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號