第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

保持計(jì)數(shù)并將其附加到 python 中的列表

保持計(jì)數(shù)并將其附加到 python 中的列表

元芳怎么了 2022-11-29 15:17:28
我有一個(gè)看起來像這樣的列表。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'}我需要計(jì)算相同的數(shù)據(jù)對(duì)象并保持?jǐn)?shù)據(jù)計(jì)數(shù)。我期待這樣的輸出。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 中執(zhí)行此操作。
查看完整描述

3 回答

?
人到中年有點(diǎn)甜

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


查看完整回答
反對(duì) 回復(fù) 2022-11-29
?
波斯汪

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}

]


查看完整回答
反對(duì) 回復(fù) 2022-11-29
?
白板的微信

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


查看完整回答
反對(duì) 回復(fù) 2022-11-29
  • 3 回答
  • 0 關(guān)注
  • 105 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)