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

如何找出字符串中出现频率最低的所有字符

解决打印字符串中所有最低频率字符的问题

问题说明

需要实现打印字符串中所有出现频率最低的字符,但现有代码仅能输出一个最低频率的字符,无法满足需求。

示例输入

aabbccdddeeeffff

期望输出

Least occuring character :  a,b,c
repeated 2 time(s)

--------------------------
Character   Frequency
--------------------------
a                2
b                2
c                2
d                3
e                3
f                4

实际输出

Least occurring character is:  a
It is repeated 2 time(s)

--------------------------
Character   Frequency
--------------------------
 a                  2
 b                  2
 c                  2
 d                  3
 e                  3
 f                  4

现有代码

# Get string from user
string = input("Enter some text: ")

# Set frequency as empty dictionary
frequency_dict = {}
tab="\t\t\t\t\t"
for character in string:
    if character in frequency_dict:
        frequency_dict[character] += 1
    else:
        frequency_dict[character] = 1

least_occurring = min(frequency_dict, key=frequency_dict.get)

# Displaying result
print("\nLeast occuring character is: ", least_occurring)
print("Repeated %d time(s)" %(frequency_dict[least_occurring]))
# Displaying result
print("\n--------------------------")
print("Character\tFrequency")
print("--------------------------")
for character, frequency in frequency_dict.items():
    print(f"{character + tab + str(frequency)}")

修改后的代码

# Get string from user
string = input("Enter some text: ")

# Set frequency as empty dictionary
frequency_dict = {}
for character in string:
    frequency_dict[character] = frequency_dict.get(character, 0) + 1

# 先获取最低频率值
min_frequency = min(frequency_dict.values())
# 筛选出所有频率等于最低值的字符
least_occurring_chars = [char for char, count in frequency_dict.items() if count == min_frequency]

# Displaying result
print(f"\nLeast occuring character :  {', '.join(least_occurring_chars)}")
print(f"repeated {min_frequency} time(s)")

# Displaying frequency table
print("\n--------------------------")
print("Character   Frequency")
print("--------------------------")
for character, frequency in frequency_dict.items():
    # 使用格式化对齐让输出更整齐
    print(f"{character:<15}{frequency}")

关键修改点

  1. 获取最低频率值:不再直接用min()取单个字符,而是先通过min(frequency_dict.values())拿到所有字符中的最低出现次数。
  2. 筛选所有低频率字符:用列表推导式遍历字典,把所有频率等于最低值的字符收集起来。
  3. 输出格式优化:用, .join()把收集到的字符拼接成逗号分隔的字符串;同时替换原有的多tab,用f"{character:<15}"实现左对齐,让频率表更整齐。
  4. 简化频率统计:用frequency_dict.get(character, 0) + 1替代原有的if-else判断,代码更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 07:07:04