为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 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 关注
  • 130 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信