从2个字典中选择最大值

2024-05-19 01:50:13 发布

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

我有两本字典d1和d2,如下所示:

enter image description here

(我有一个数据框,其中列包含字典,我从中取了一个值)

我想做的是,比较这些d1和d2,得到常见的城市(d1交叉点d2),然后在d1中找到最大值的城市。如果d1中2个或更多城市之间存在平局,则我计划检查d2值作为平局断路器

尽管我有这个想法,但我不知道如何高效地编写代码,因为数据帧约为100000行。我希望代码的执行时间尽可能短。我将如何实现这一点

为了回应@Joshua的评论,我将词典作为文本:

d1:
{'Bangalore': 50.0, 'Vadakara': 6.25, 'Pathanapuram': 6.25, 'Kannur': 6.25, 'Adoor': 3.125, 'Kozhikode': 7.8125, 'Pathanamthitta': 4.6875, 'Thalassery': 1.5625, 'Coimbatore': 1.5625, 'Calicut': 6.25, 'Kanjanagadu': 3.125, 'Chennai': 1.5625, 'Perambra': 1.5625}

d2:
{'Bangalore': 45.0, 'Kozhikode': 28.333333333333332, 'Thrissur District': 21.666666666666668, 'Kannur': 3.3333333333333335, 'Wayanad': 1.6666666666666667}

Tags: 数据代码字典时间评论计划d2d1
1条回答
网友
1楼 · 发布于 2024-05-19 01:50:13

您可以将max()与自定义key=一起使用:

d1 = {
    "Bangalore": 50.0,
    "Vadakara": 6.25,
    "Pathanapuram": 6.25,
    "Kannur": 6.25,
    "Adoor": 3.125,
    "Kozhikode": 7.8125,
    "Pathanamthitta": 4.6875,
    "Thalassery": 1.5625,
    "Coimbatore": 1.5625,
    "Calicut": 6.25,
    "Kanjanagadu": 3.125,
    "Chennai": 1.5625,
    "Perambra": 1.5625,
}

d2 = {
    "Bangalore": 45.0,
    "Kozhikode": 28.333333333333332,
    "Thrissur District": 21.666666666666668,
    "Kannur": 3.3333333333333335,
    "Wayanad": 1.6666666666666667,
}

city = max(d1.keys() & d2.keys(), key=lambda k: (d1[k], d2[k]))
print(city)

印刷品:

Bangalore

相关问题 更多 >

    热门问题