如何在 Python 中将字典分配给另一个字典的每个值?

我有两本内容相关的词典。一个是由一个以'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)]]

我相信多余的方括号是使用默认字典几次创建新的缩短字典的产物,这些字典删除了不符合问题要求的值。


犯罪嫌疑人X
浏览 131回答 3
3回答

慕虎7371278

你可以用字典理解来做到这一点: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']}}

喵喔喔

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)

千巷猫影

这是“理解”的一个很好的例子,它被优化为比循环快得多:combined_dict = { k:            {u:t for (u,t) in dict2.items() if u in v}              for (k,v) in dict1.items()            }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python