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

2024-09-27 07:32:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两本内容相关的词典。一个是由以键,以值的数据集构成的。另一个字典由相同的数据集组成,但将作为键,将该用户购买的作为

我想能够做的是创建一个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)]]

我相信,多余的方括号是多次使用默认dict创建新的缩短词典的结果,这些词典删除了不符合问题要求的值


Tags: 数据方法用户内容fordatetime字典dict
3条回答

你可以通过听写理解来做到这一点:

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']}}

这是一个很好的“理解”案例,它被优化为比循环快得多:

combined_dict = { k:
            {u:t for (u,t) in dict2.items() if u in v}  
            for (k,v) in dict1.items()
            }

有关详细信息,请参见此处:https://www.python.org/dev/peps/pep-0274/

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)

相关问题 更多 >

    热门问题