gpt4 book ai didi

python - 按每个字典键对字典列表进行排序

转载 作者:太空宇宙 更新时间:2023-11-04 09:49:09 25 4
gpt4 key购买 nike

我正在创建一个字典列表,然后我想按键值从低到高对列表中的字典进行排序。

除排序外一切正常:

def pythagorean(x1, y1, x2=0, y2=0):
return ((x1 - x2)**2 + (y1 - y2)**2)**0.5


points = [(-2, -4), (0, -2), (-1, 0), (3, -5), (-2, -3), (3, 2)]

dicts = []

for coord in points:
d = {}
a1, b1 = coord
distance = pythagorean(a1, b1)
d[distance] = (a1, b1)
dicts.append(d)

for i in dicts:
print(i)

dist_list = []

for item in dicts:
for key in item:
dist_list.append(key)


temp = sorted(dicts, key=lambda d: [k in d for k in dist_list])
print(temp)

我得到以下输出:

{4.47213595499958: (-2, -4)}
{2.0: (0, -2)}
{1.0: (-1, 0)}
{5.830951894845301: (3, -5)}
{3.605551275463989: (-2, -3)}
{3.605551275463989: (3, 2)}
[4.47213595499958, 2.0, 1.0, 5.830951894845301, 3.605551275463989, 3.605551275463989]
[{3.605551275463989: (-2, -3)},
{3.605551275463989: (3, 2)},
{5.830951894845301: (3, -5)},
{1.0: (-1, 0)},
{2.0: (0, -2)},
{4.47213595499958: (-2, -4)}]

排序顺序不正确,至少就我认为应该如何排序而言:按字典中键的值从低到高排序。

最佳答案

通过将每个字典中的键用作排序键,可以将它们转换为列表:

>>> sorted(dicts, key=lambda d: list(d.keys()))
[{1.0: (-1, 0)},
{2.0: (0, -2)},
{3.605551275463989: (-2, -3)},
{3.605551275463989: (3, 2)},
{4.47213595499958: (-2, -4)},
{5.830951894845301: (3, -5)}]

关于python - 按每个字典键对字典列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48568833/

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