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

如何允许用户自定义重排DataFrame列生成的唯一值列表?

更简洁的自定义排序方案

方法1:直接按偏好顺序输入生成列表

如果用户明确知道自己的排序顺序,直接引导输入是最快捷的方式,逻辑简单无冗余:

import pandas as pd

# 读取数据并提取唯一水果列表
fruit_info = pd.read_csv('Fruit Information.csv')
fruit_list = fruit_info['Fruit Name'].unique().tolist()
print("可选水果:", fruit_list)

# 让用户按偏好顺序输入,逗号分隔
user_input = input("请按喜好顺序输入水果(用逗号分隔,例:Banana,Apple,Cherry):")
sorted_fruit_list = [fruit.strip() for fruit in user_input.split(',')]

# 可选:校验输入有效性,过滤不在原列表的内容
validated_list = [f for f in sorted_fruit_list if f in fruit_list]
print("最终排序结果:", validated_list)

方法2:基于排名序号自动排序

如果用户习惯用数字排名,用sorted结合匿名函数直接处理,比手动构建字典再排序更简洁:

import pandas as pd

fruit_info = pd.read_csv('Fruit Information.csv')
fruit_list = fruit_info['Fruit Name'].unique().tolist()
print("可选水果:", fruit_list)

# 收集每个水果的排名值
rank_map = {}
for fruit in fruit_list:
    rank = int(input(f"请输入{fruit}的排名(数字越小优先级越高):"))
    rank_map[fruit] = rank

# 按排名值排序并生成列表
sorted_fruit_list = [fruit for fruit, rank in sorted(rank_map.items(), key=lambda x: x[1])]
print("最终排序结果:", sorted_fruit_list)

方法3:交互式逐步选择排序(适合少量选项)

如果水果数量不多,用循环让用户每次选择当前最喜欢的,逐步构建排序列表,交互更友好:

import pandas as pd

fruit_info = pd.read_csv('Fruit Information.csv')
fruit_list = fruit_info['Fruit Name'].unique().tolist()
remaining_fruits = fruit_list.copy()
sorted_fruit_list = []

print("请依次选择你最喜欢的水果:")
while remaining_fruits:
    print(f"剩余可选:{remaining_fruits}")
    choice = input("输入当前最喜欢的水果:")
    if choice in remaining_fruits:
        sorted_fruit_list.append(choice)
        remaining_fruits.remove(choice)
    else:
        print("输入无效,请从剩余列表选择!")

print("最终排序结果:", sorted_fruit_list)

这几种方法都比手动字典排序更高效,可根据场景选择:用户明确排序顺序选方法1,需要量化排名选方法2,选项少追求交互体验选方法3。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 07:18:16