gpt4 book ai didi

python - 创建一个函数以按特定值对字典列表进行排序

转载 作者:太空宇宙 更新时间:2023-11-04 11:15:06 24 4
gpt4 key购买 nike

<分区>

其他人也问过类似的问题,但答案对我没有帮助。我是初学者,正在学习教程并在最后一步中苦苦挣扎。

我有一个邻居列表并创建了一个函数(称为 distance_all()),对于给定的邻居,该函数将返回一个列表,其中包含每个其他邻居与该邻居的距离给邻居。现在我正在尝试编写一个函数,从最近到最远的邻居对列表进行排序,但我无法让它工作。我还需要该函数采用可选的第三个参数来指定返回的邻居数量。

这是邻居的原始列表:

neighbors = [{'name': 'Fred', 'avenue': 4, 'street': 8},
{'name': 'Suzie', 'avenue': 1, 'street': 11},
{'name': 'Bob', 'avenue': 5, 'street': 8},
{'name': 'Edgar', 'avenue': 6, 'street': 13},
{'name': 'Steven', 'avenue': 3, 'street': 6},
{'name': 'Natalie', 'avenue': 5, 'street': 4}]

当我运行计算距离的函数时,我得到以下信息:

#input
distance_all(fred, neighbors)

#output
[{'name': 'Suzie', 'avenue': 1, 'street': 11, 'distance': 4.242640687119285},
{'name': 'Bob', 'avenue': 5, 'street': 8, 'distance': 1.0},
{'name': 'Edgar', 'avenue': 6, 'street': 13, 'distance': 5.385164807134504},
{'name': 'Steven', 'avenue': 3, 'street': 6, 'distance': 2.23606797749979},
{'name': 'Natalie', 'avenue': 5, 'street': 4, 'distance': 4.123105625617661}]

现在我正在尝试编写一个函数,它 (1) 运行 distance_all() 函数,(2) 从最近到最远对输出列表进行排序,并且 (3) 有一个可选的第三个指定要在输出列表中包含多少个邻居的参数。我还没有进入第三步,因为我正在为第二步而苦苦挣扎,但我们将不胜感激。我已经尝试了很多事情,但这是我最近的尝试:

def nearest_neighbors(first_neighbor, neighbors, number = None):
neighbor_distance = [distance_all(first_neighbor, neighbors)]
return (sorted(neighbor_distance, key = lambda i: i['distance']))

当我运行 nearest_neighbors(fred, neighbors, 2) 时出现错误 TypeError: list indices must be integers or slice, not str。我不知道我做错了什么。感谢您的帮助。

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