【发布时间】:2019-04-14 03:40:19
【问题描述】:
这很容易通过几个循环来完成,但我确信有一种更有效的方法可以实现这一点,我很想学习。
考虑以下 dict 数组,它表示从 nosql 数据库中提取的数据。
x = [
{
"loc" : "alpha",
"tag" : 1,
"dist" : 5
},
{
"loc" : "bravo",
"tag" : 0,
"dist" : 2
},
{
"loc" : "charlie",
"tag" : 5,
"dist" : 50
},
{
"loc" : "delta",
"tag" : 4,
"dist" : 2
},
{
"loc" : "echo",
"tag" : 2,
"dist" : 30
},
{
"loc" : "foxtrot",
"tag" : 4,
"dist" : 2
},
{
"loc" : "gamma",
"tag" : 4,
"dist" : 2
},
{
"loc" : "hotel",
"tag" : 0,
"dist" : 2
},
]
我想找到所有具有最低 'dist' 值的项目,如果有多个具有相同最低值的 dict,我希望对具有最多 dicts 的属性 'tag' 进行分组相同的最低值。
例如,从上面返回的所需数据将是:
r = [
{
"LocationName" : "delta",
"tag" : 4,
"dist" : 2
},
{
"loc" : "foxtrot",
"tag" : 4,
"dist" : 2
},
{
"loc" : "gamma",
"tag" : 4,
"dist" : 2
}
]
总结:dist:2 是最小值,[bravo, delta, foxtrot, gamma, hotel] 的 dist 都是 2,[bravo, hotel] 的标签是:0 和 [delta, foxtrot, gamma]有一个标签:4 。 dicts [delta, foxtrot, gamma] 的数组被返回,因为它们有更多具有相同匹配标签和最低 dist。
我正在使用 python 3.6。
感谢您的帮助和关注!
【问题讨论】:
标签: python arrays python-3.x dictionary