

新闻资讯
技术学院本文介绍如何同时对字典按键(key)升序排序,并对每个键对应值中的嵌套列表(如元组列表)按其首个数值元素升序重排,适用于 svm-light 格式数据预处理等场景。
要实现题目中要求的双重排序——字典按键升序 + 每个键对应值中元组列表按第一个元素升序排列——仅靠 for key in sorted(df) 是不够的:它只能保证遍历顺序按 key 排序,但无法自动排序 value 中的嵌套列表。必须显式对每个 df[key] 进行内部排序。
✅ 正确做法是:
以下是优化后的完整代码示例:
for key in sorted(df): # 按 key 升序遍历
# 对 value 中的元组列表按第一个元素(float)升序排序
sorted_values = sorted(df[key]
, key=lambda x: x[0])
if key in hf:
deliverable.write(bytes(f"{1} {bag_to_svmlight(sorted_values)}\n", 'utf-8'))
else:
deliverable.write(bytes(f"{0} {bag_to_svmlight(sorted_values)}\n", 'utf-8'))? 注意事项:
? 小技巧:若需一次性生成已完全排序的新字典(如用于调试或后续复用),可构造如下:
sorted_df = {
k: sorted(df[k], key=lambda x: x[0])
for k in sorted(df)
}该字典按键升序,且每个值列表均按元组首项升序排列,与题目期望输出完全一致。