You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取列表字符串中的行星名并按日心位置降序展示?

解决方法:提取排序后的行星名称

嘿,我懂你的困扰——你已经成功实现了按日心位置降序排列行星,但现在输出的是包含位置数字的完整字符串/元组,而你只想展示干净的行星名称对吧?其实核心就是在排序完成后,从每个元素里单独提取出行星名称部分,下面分两种常见情况给你具体代码方案:

情况1:你的planet_tup是元组列表(比如(行星名, 日心位置))

如果你的数据结构是每个元素都把行星名和位置数字分开存成元组,比如:

planet_tup = [("水星", 1), ("金星", 2), ("地球", 3), ("火星", 4), ("木星", 5)]

那排序后直接用列表推导式提取名称即可:

# 按日心位置降序排序,只保留行星名称
sorted_planet_names = [name for name, pos in sorted(planet_tup, key=lambda x: x[1], reverse=True)]

# 打印结果
for name in sorted_planet_names:
    print(name)

运行后就会输出从远到近的行星名称,完全不带数字。

情况2:你的planet_tup是带数字的字符串列表(比如"1 水星")

如果你的数据是包含位置数字的字符串,比如:

planet_tup = ["1 水星", "2 金星", "3 地球", "4 火星", "5 木星"]

那需要先拆分字符串提取数字和名称,排序后再把名称单独拿出来:

# 先按字符串里的数字降序排序,再提取行星名称
sorted_planet_names = []
# 排序时用split提取数字转成整数作为排序依据
for planet_str in sorted(planet_tup, key=lambda x: int(x.split()[0]), reverse=True):
    # 拆分后取除了第一个数字之外的部分(适配名称带空格的情况)
    name = ' '.join(planet_str.split()[1:])
    sorted_planet_names.append(name)

# 输出结果
for name in sorted_planet_names:
    print(name)

核心思路总结

不管你的原始数据结构是元组还是带数字的字符串,步骤都是:

  • 用key参数指定按日心位置(数字)降序排序
  • 遍历排序后的结果,只提取行星名称字段,抛弃数字部分

如果你的planet_tup是其他格式(比如自定义类实例),思路也是一样:排序后取实例的名称属性就好啦。

内容的提问来源于stack exchange,提问作者hugole98

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:56:49