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

Python二维数组按列降序排序及字母统计代码求助

问题1:按指定列对二维数组降序排序

要实现按第二行数值降序排列二维数组,可通过配对元素与对应数值→排序→拆分回原结构的步骤完成:

# 原始二维数组
arr = [
    ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'],
    [1, 3, 5, 7, 8, 1, 2, 2]
]

# 1. 将元素与对应数值配对,形成元组列表
pairs = list(zip(arr[0], arr[1]))
# 2. 按数值降序排序(以元组第二个元素为关键字)
sorted_pairs = sorted(pairs, key=lambda x: x[1], reverse=True)
# 3. 拆分排序后的元组,还原为二维数组结构
sorted_arr = [list(row) for row in zip(*sorted_pairs)]

print(sorted_arr[0])  # 输出: ['E', 'D', 'C', 'B', 'G', 'H', 'A', 'F']
print(sorted_arr[1])  # 输出: [8, 7, 5, 3, 2, 2, 1, 1]

问题2:优化字母出现次数统计代码

你的代码能实现基本统计,但存在效率冗余、逻辑不严谨的问题,以下是两种改进方案:

方案1:优化原有逻辑

解决重复扫描字符串、冗余存储、空格判断不严谨的问题:

s = input().upper()
# 去重并过滤空格,同时保持字母顺序
unique_chars = [c for c in sorted(set(s)) if c != ' ']
# 一次性生成计数列表
counts = [s.count(char) for char in unique_chars]
# 组合为目标结构
kitu = [unique_chars, counts]

# 验证输出
for char, cnt in zip(kitu[0], kitu[1]):
    print(f"{char}: {cnt}")

方案2:使用collections.Counter(更高效简洁)

Python标准库的Counter专为元素计数设计,无需手动遍历扫描:

from collections import Counter

s = input().upper()
# 统计所有非空格字符的出现次数
char_counter = Counter(c for c in s if c != ' ')
# 按字母顺序排序统计结果
sorted_result = sorted(char_counter.items())

# 转换为你需要的二维列表格式
kitu = [[item[0] for item in sorted_result], [item[1] for item in sorted_result]]

# 验证输出
for char, cnt in zip(kitu[0], kitu[1]):
    print(f"{char}: {cnt}")

内容的提问来源于stack exchange,提问作者Trung The Shrimp

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 06:03:38