给出这两本词典

d1 = {'Hulu' : 12, 'Crunchyroll' : 10, 'Cornhub' : 10, 'Twitter': 20 }#Name and Date
d2 = {'Crunchyroll': 15, 'Bulu' : 30, 'Cornhub': 50, 'Hulu': 25, 'Twitter': 100}#Name and Amount

找到任何匹配的名称,并使用D2中的条目创建嵌套词典.使用d1中的值作为‘父名称’(不确定这是否是正确的术语)

我目前的输出:

{12: {('Hulu', 25)}, 10: {('Crunchyroll', 15)}, 'Cornhub': 50, 20: {('Twitter', 100)}}

我的预期输出:

{12: {('Hulu', 25)}, 10: {('Crunchyroll', 15), ('Cornhub', 50)}, 20: {('Twitter', 100)}}

以下是我到目前为止拥有的完整代码

d1 = {'Hulu' : 12, 'Crunchyroll' : 10, 'Cornhub' : 10, 'Twitter': 20 }#Name and Date
d2 = {'Crunchyroll': 15, 'Bulu' : 30, 'Cornhub': 50, 'Hulu': 25, 'Twitter': 100}#Name and Amount
dp = {}
total = 0
space = ' '

for x in d1.items() :
    #print(x)
    for i in d2.items() :
        #print(x,":",i)
    #Filter based of names
        if x[0] == i[0] and x[1] not in dp.keys() :
            #print('Date', x[1], 'Bill:Amount', i)
            dp[x[1]] = {i}
            total += i[1]
        elif x[0] == i[0] and x[1] in dp.keys() :
            #print('elif', i)
            total += i[1]
            dp.update({i})
#print(sorted(dp.items(), key=lambda x:x))
print('Up coming bills', dp, '\n''Total= $',total)

我也try 了-在ELIF中而不是更新中,但也失败了,并重写了现有的key:Value Items

dp[x[1]] = {i[0] : i[1]}

推荐答案

要获得预期的输出,您可以使用单个循环.这将提高性能:

d1 = {'Hulu': 12, 'Crunchyroll': 10, 'Cornhub': 10, 'Twitter': 20}
d2 = {'Crunchyroll': 15, 'Bulu': 30, 'Cornhub': 50, 'Hulu': 25, 'Twitter': 100}

result = {}

for key, value in d1.items():
    if value not in result:
        result[value] = set()
    if key in d2:
        result[value].add((key, d2[key]))

print(result)

如果希望进一步优化代码,可以使用如下所示的defaultdict

from collections import defaultdict

d1 = {'Hulu': 12, 'Crunchyroll': 10, 'Cornhub': 10, 'Twitter': 20}
d2 = {'Crunchyroll': 15, 'Bulu': 30, 'Cornhub': 50, 'Hulu': 25, 'Twitter': 100}

result = defaultdict(set)

for key in d1:
    if key in d2:
        result[d1[key]].add((key, d2[key]))

print(dict(result))

您可以根据需要更改逻辑

Python相关问答推荐

来自ARIMA结果的模型方程

将词典写入Excel

将numpy数组与空数组相加

将嵌套列表的字典转换为数据框中的行

Twilio:CallInstance对象没有来自_的属性'

由于瓶颈,Python代码执行太慢-寻求性能优化

用gekko解决的ADE方程系统突然不再工作,错误消息异常:@错误:模型文件未找到.& &

如何删除索引过go 的lexsort深度可能会影响性能?' &>

非常奇怪:tzLocal.get_Localzone()基于python3别名的不同输出?

将两只Pandas rame乘以指数

pandas滚动和窗口中有效观察的最大数量

根据二元组列表在pandas中创建新列

我如何根据前一个连续数字改变一串数字?

在极性中创建条件累积和

移动条情节旁边的半小提琴情节在海运

SQLAlchemy bindparam在mssql上失败(但在mysql上工作)

在Python 3中,如何让客户端打开一个套接字到服务器,发送一行JSON编码的数据,读回一行JSON编码的数据,然后继续?

Polars asof在下一个可用日期加入

Pandas:计算中间时间条目的总时间增量

关于两个表达式的区别