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

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

合并 id 重復(fù)的字典列表 - python3

合并 id 重復(fù)的字典列表 - python3

蕪湖不蕪 2022-07-26 21:55:52
我有一個(gè)字典列表:[{"id":"1", "name":"Alice", "age":"25", "languages":"German"}, {"id":"1", "name":"Alice", "age":"25", "languages":"French"}, {"id":"2", "name":"John", "age":"30", "languages":"English"}, {"id":"2", "name":"John", "age":"30", "languages":"Spanish"}]我希望最終結(jié)果是(我在檢查重復(fù)項(xiàng)時(shí)只考慮 id):[{"id":"1", "name":"Alice", "age":"25", "languages":"German, French"}, {"id":"2", "name":"John", "age":"30", "languages":"English, Spanish"}]看著類似的問題,我認(rèn)為使用集合可能是答案,但無法正確實(shí)現(xiàn)。提前感謝您的回答。
查看完整描述

1 回答

?
海綿寶寶撒

TA貢獻(xiàn)1809條經(jīng)驗(yàn) 獲得超8個(gè)贊

在這里有點(diǎn)冗長(zhǎng)以幫助查看結(jié)構(gòu)。絕對(duì)可以做一些很酷的 lambda 東西來解決這個(gè)問題,并使列表理解更加“pythonic”。但這里有一個(gè)快速的解決方案!


# Set up initial data

unmerged = [

    {"id":"1", "name":"Alice", "age":"25", "languages":"German"},

    {"id":"1", "name":"Alice", "age":"25", "languages":"French"},

    {"id":"2", "name":"John", "age":"30", "languages":"English"},

    {"id":"2", "name":"John", "age":"30", "languages":"Spanish"}]


# merge the data by your composite key of id-name-age

merged = {}

for entry in unmerged:

    entry_id = entry['id']

    entry_name = entry['name']

    entry_age = entry['age']

    entry_languages = entry['languages']

    composite_key = entry_id + entry_name + entry_age

    if composite_key in merged:

        merged[composite_key]['languages'].append(entry_languages)

    else:

        merged[composite_key] = {

            'id': entry_id,

            'name': entry_name,

            'age': entry_age,

            'languages': [entry_languages]

        }


# reconstruct your list with just your unique entries

cleaned = []

for key, value in merged.items():

    print(key, value)

    cleaned.append({

        'id': value['id'],

        'name': value['name'],

        'age': value['age'],

        'languages': ', '.join(value['languages']) # string join langauges by ", "

    })


for clean in cleaned:

    print(clean)

然后為您提供最終輸出,其中清理的是您的合并條目列表:


{'id': '1', 'name': 'Alice', 'age': '25', 'languages': 'German, French'}

{'id': '2', 'name': 'John', 'age': '30', 'languages': 'English, Spanish'}

謝謝,如果這有幫助,請(qǐng)告訴我!


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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