gpt4 book ai didi

python - 按 2 个键排序,但仅反转第一个键

转载 作者:行者123 更新时间:2023-12-01 00:14:40 25 4
gpt4 key购买 nike

再次询问,因为在我进行更新之前我的问题已关闭。

这是按 2 个键的标准排序,它会反转两个键的结果。

s = sorted(s, key = lambda x: (x['date'], x['id']), reverse=True)

但是我怎样才能只对第一个键进行反向排序,如果我需要按第二个键排序,它应该排序而不反向?

现在输出

ID DATE 
1282 2019-12-19 12:09:28
1281 2019-12-19 12:09:28
1280 2019-12-19 12:09:28
1279 2019-12-19 12:09:27
1278 2019-12-19 12:09:27
1277 2019-12-19 12:09:27
1275 2019-12-19 12:09:27

Desired output

1280 2019-12-19 12:09:28
1281 2019-12-19 12:09:28
1282 2019-12-19 12:09:28
1275 2019-12-19 12:09:27
1277 2019-12-19 12:09:27
1278 2019-12-19 12:09:27
1279 2019-12-19 12:09:27

最佳答案

假设您的字段存储为字符串,但仅包含仅包含数字的 id。然后,您可以通过将 id 转换为 int 来进行就地排序以进行排序,这不会改变数据的基础类型,仅用于决定排序顺序。

data = """1282 2019-12-19 12:09:28 
1281 2019-12-19 12:09:28
1280 2019-12-19 12:09:28
1279 2019-12-19 12:09:27
1278 2019-12-19 12:09:27
1277 2019-12-19 12:09:27
1275 2019-12-19 12:09:27"""

s = []
for line in data.splitlines():
ID, *date = line.split()
s.append((ID, " ".join(date)))

print("###BEFORE###")
for item in s:
print(item[0], item[1])

s.sort(key=lambda x: (x[1], -int(x[0])), reverse=True)

print("###AFTER###")
for item in s:
print(item[0], item[1])

print(f'type of {s[0][0]} is still {type(s[0][0])}')

输出

###BEFORE###
1282 2019-12-19 12:09:28
1281 2019-12-19 12:09:28
1280 2019-12-19 12:09:28
1279 2019-12-19 12:09:27
1278 2019-12-19 12:09:27
1277 2019-12-19 12:09:27
1275 2019-12-19 12:09:27
###AFTER###
1280 2019-12-19 12:09:28
1281 2019-12-19 12:09:28
1282 2019-12-19 12:09:28
1275 2019-12-19 12:09:27
1277 2019-12-19 12:09:27
1278 2019-12-19 12:09:27
1279 2019-12-19 12:09:27
type of 1280 is still <class 'str'>

关于python - 按 2 个键排序,但仅反转第一个键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59409751/

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