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

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

如何在Python中不循環(huán)獲取鍵的值

如何在Python中不循環(huán)獲取鍵的值

慕斯709654 2022-11-01 17:14:32
我有一個(gè) for 循環(huán),我需要在其中分配從另一個(gè)字典中獲取的新鍵的值。我試圖避免 for 循環(huán)中的 for 循環(huán)。我的第一本字典如下所示:ids = [{'1020': 'ID-2522'}, {'1030': 'ID-2523'}, {'1040': 'ID-2524'}]我正在循環(huán)的字典列表如下所示:data = [{'sf_id': '1020', TotalPrice': '504'}, {'sf_id': '1030', TotalPrice': '400'}, {'sf_id': '1040', TotalPrice': '500'}]這是我的for循環(huán):for index, my_dict in enumerate(data):    for key, value in my_dict.items():         new_id = my_dict["sf_id"]         opportunity = ids[new_id]以便它獲取對(duì)應(yīng)的值。期望的輸出是:print(opportunity)ID-2522ID-2523ID-2524
查看完整描述

3 回答

?
臨摹微笑

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

假設(shè)整個(gè)集合中沒(méi)有重復(fù)鍵,您可以使用reduce將每個(gè) id 字典合并到一個(gè) id 字典中,因此您只需迭代兩個(gè)集合一次

from functools import reduce


ids = [{'1020': 'ID-2522'}, {'1030': 'ID-2523'}, {'1040': 'ID-2524'}]

data = [{'sf_id': '1020', 'TotalPrice': '504'}, {'sf_id': '1030', 'TotalPrice': '400'}, {'sf_id': '1040', 'TotalPrice': '500'}]


ids_map = reduce(lambda x, y: x.update(y) or x , ids, {})


for my_dict in data:

  new_id = my_dict["sf_id"]

  opportunity = ids_map[new_id]

  print(opportunity)


查看完整回答
反對(duì) 回復(fù) 2022-11-01
?
Cats萌萌

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

ids是字典列表,而不是字典。這使得查找其中一個(gè)鍵的效率非常低,因?yàn)槟仨毐闅v整個(gè)列表才能找到它。


因此,第一步是將所有這些小字典合并成一個(gè)大字典。


然后,我們可以使用您的預(yù)期輸出有效地構(gòu)建一個(gè)列表:


ids = [{'1020': 'ID-2522'}, {'1030': 'ID-2523'}, {'1040': 'ID-2524'}]


data = [{'sf_id': '1020', 'TotalPrice': '504'}, 

        {'sf_id': '1030', 'TotalPrice': '400'}, 

        {'sf_id': '1040', 'TotalPrice': '500'}]


ids_dict = {k:v for dct in ids for k, v in dct.items()}


opportunity = []


for my_dict in data:

    new_id = my_dict["sf_id"]

    opportunity.append(ids_dict[new_id])


print(opportunity)

# ['ID-2522', 'ID-2523', 'ID-2524']

(注意enumerate如果不使用索引就不需要)


或者,更短的,使用列表理解:


opportunity = [ids_dict[my_dict["sf_id"]] for my_dict in data]

print(opportunity)

#  ['ID-2522', 'ID-2523', 'ID-2524']


查看完整回答
反對(duì) 回復(fù) 2022-11-01
?
慕容3067478

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

# Create a new variable and save sftoap in it

new_ids = ids


# pop the items from original list of dicts and save it in a new dict 

sftoap_dict = {}

for d in new_ids:

    key, value = d.popitem()

    sftoap_dict[key] = value


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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