gpt4 book ai didi

python - 获取字典中具有第二个和第三个最大值的键

转载 作者:行者123 更新时间:2023-12-01 03:51:50 26 4
gpt4 key购买 nike

我有一个类似这样的 JSON 文件。

{
"b0:47:bf:af:c1:42":
{
"No. of visits": 10, "cities":
{
"Mumbai": {"count": 5,"last_visited": "5/22/2016"},
"Kolkata": {"count": 2,"last_visited": "5/22/2016"},
"Amritsar":{"count": 3,"last_visited": "5/22/2016"}
}
},
"c0:ee:fb:71:be:0d":
{
"No. of visits": 24, "cities":
{
"Mumbai": {"count": 2,"last_visited": "5/22/2016"},
"Kolkata": {"count": 20,"last_visited": "5/22/2016"},
"Amritsar":{"count": 2,"last_visited": "5/22/2016"}
}
}
}

现在,为了获取用户或每个键的键 b0:47:bf:af:c1:42 的最大访问城市,我当前将其解析为字典,然后使用它。

for mac in dic_data:
cities = dic_data[mac]['cities']
most_visited_city = max(cities, key=lambda x: cities[x]['count'])

但是如何获得第二个最大访问城市、第三个最大访问城市等等。我使用的是 python 2.7。

最佳答案

您可以使用sorted,而不是使用max

这样您将获得基于count的排序列表:

d = {
"b0:47:bf:af:c1:42":
{
"No. of visits": 10, "cities":
{
"Mumbai": {"count": 5,"last_visited": "5/22/2016"},
"Kolkata": {"count": 2,"last_visited": "5/22/2016"},
"Amritsar":{"count": 3,"last_visited": "5/22/2016"}
}
},
"c0:ee:fb:71:be:0d":
{
"No. of visits": 24, "cities":
{
"Mumbai": {"count": 2,"last_visited": "5/22/2016"},
"Kolkata": {"count": 20,"last_visited": "5/22/2016"},
"Amritsar":{"count": 2,"last_visited": "5/22/2016"}
}
}
}

for mac in d:
cities = d[mac]['cities']

sorted_cities = sorted(cities, key=lambda x: cities[x]['count'])
# or if you want the sort to be the other way around
reversed_sorted_cities = sorted(cities, key=lambda x: cities[x]['count'],
reverse=True)
print sorted_cities


>> ['Kolkata', 'Amritsar', 'Mumbai']
['Amritsar', 'Mumbai', 'Kolkata']

更新要获取您在评论中询问的输出:

d = { ... }

info = {}

for mac in d:
cities = d[mac]['cities']

info[mac] = sorted(cities, key=lambda x: cities[x]['count'])

print info

>> {'b0:47:bf:af:c1:42': ['Kolkata', 'Amritsar', 'Mumbai'],
'c0:ee:fb:71:be:0d': ['Mumbai', 'Amritsar', 'Kolkata']}

也可以使用字典理解在一行中完成:

info = {mac: sorted(d[mac]['cities'], key=lambda x: d[mac]['cities'][x]['count']) 
for mac in d}

关于python - 获取字典中具有第二个和第三个最大值的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38115589/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com