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

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

如何在 Python 中將字典分配給另一個字典的每個值?

如何在 Python 中將字典分配給另一個字典的每個值?

犯罪嫌疑人X 2023-06-06 15:47:09
我有兩本內容相關的詞典。一個是由一個以'shopid'為鍵,以'userid'為值的數據集形成的。另一個字典由相同的數據集組成,但以“用戶 ID”為鍵,以該用戶購買的“日期時間”為值。我想做的是創建一個 for 循環(或類似循環),對于每個 'shopid' 鍵采用 'userid' 值并將這些 'userid' 值轉換為包含 'datetime' 值的鍵來自第二本詞典。這適用于大型數據集。我知道字典對您可以對它們做什么有一些限制,所以很高興知道這是否可行,或者是否有更好的方法來實現類似的結果?作為輸入/輸出理想的示例:dict1 = {'shopid1':['userid1','userid2','userid3']}dict2 = {    'userid1':['2020-08-17 09:00','2020-08-18 08:30'],     'userid2':['2020-08-16 11:00','2020-08-15 13:30'],     'userid3':['2020-08-18 09:30','2020-08-18 10:00','2020-08-18 11:30']    }    combined_dict = {    'shopid1':{        'userid1':['2020-08-17 09:00','2020-08-18 08:30'],        'userid2':['2020-08-16 11:00','2020-08-15 13:30'],        'userid3':['2020-08-18 09:30','2020-08-18 10:00','2020-08-18 11:30']        }    }  編輯:我想合并的實際詞典如下所示:shopid = {10159: [[[62775725, 214988798, 214988798, 214988798, 62775725,     62775725]]]userid = {166840413: [[datetime.datetime(2019, 12, 29, 15, 48),     datetime.datetime(2019, 12, 29, 15, 48), datetime.datetime(2019, 12, 29,     15, 48)]]我相信多余的方括號是使用默認字典幾次創建新的縮短字典的產物,這些字典刪除了不符合問題要求的值。
查看完整描述

3 回答

?
慕虎7371278

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

你可以用字典理解來做到這一點:


combined_dict = {i: {j: dict2[j] for j in dict1[i]} for i in dict1}

輸出:


>>> from pprint import pprint as pp

>>> pp(combined_dict)

{'shopid1': {'userid1': ['2020-08-17 09:00', '2020-08-18 08:30'],

             'userid2': ['2020-08-16 11:00', '2020-08-15 13:30'],

             'userid3': ['2020-08-18 09:30',

                         '2020-08-18 10:00',

                         '2020-08-18 11:30']}}


查看完整回答
反對 回復 2023-06-06
?
喵喔喔

TA貢獻1735條經驗 獲得超5個贊

dict1 = {'shopid1':['userid1','userid2','userid3']}

dict2 = {'userid1':['2020-08-17 09:00','2020-08-18 08:30'], 

'userid2':['2020-08-16 11:00','2020-08-15 13:30'], 

'userid3':['2020-08-18 09:30','2020-08-18 10:00','2020-08-18 11:30']}

combined_dict ={'shopid1':{'userid1':['2020-08-17 09:00','2020-08-18 08:30'],

'userid2':['2020-08-16 11:00','2020-08-15 13:30'],

'userid3':['2020-08-18 09:30','2020-08-18 10:00','2020-08-18 11:30']}}

for i in combined_dict:

    print(i)

    a=combined_dict[i]

    for j in a:

        b=a[j]

        print(j)

        for k in b:

            print(k)


查看完整回答
反對 回復 2023-06-06
?
千巷貓影

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

這是“理解”的一個很好的例子,它被優化為比循環快得多:


combined_dict = { k:

? ? ? ? ? ? {u:t for (u,t) in dict2.items() if u in v}??

? ? ? ? ? ? for (k,v) in dict1.items()

? ? ? ? ? ? }

查看完整回答
反對 回復 2023-06-06
  • 3 回答
  • 0 關注
  • 159 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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