统计python之禅中各字符的出现次数,按出现次数从多到少排列。 示例:'0123012010',则输出应为:'0123'
时间: 2023-12-29 14:06:08 浏览: 21
好的,我可以帮你实现这个功能。以下是代码:
```python
text = " ".join([line.strip() for line in open("zen.txt")]) # 读取Python之禅的文本文件
count = {} # 定义一个空字典,用于存放每个字符的出现次数
# 遍历文本中的每个字符,统计出现次数
for char in text:
if char in count:
count[char] += 1
else:
count[char] = 1
# 按出现次数从多到少排序
result = sorted(count, key=lambda k: count[k], reverse=True)
# 输出结果
print("".join(result))
```
这里的代码首先读取了Python之禅的文本文件,然后遍历文本中的每个字符,统计每个字符的出现次数,并将结果存储在一个字典中。接着,我们使用Python内置的 `sorted()` 函数,按照字典的值(即出现次数)从多到少进行排序,并输出排序后的结果。
相关问题
对python之禅进行词频统计,并按词出现的次数从多到少依次输出。出现次数相同的情况下,按词的长短从长到短排列输出。 输出格式示例: 20 is 18 the 18 ok 17 pass
好的,我已经明白了你的要求。下面是实现代码:
```python
import re
with open('zen_of_python.txt', 'r') as f:
text = f.read()
words = re.findall(r'\w+', text.lower())
freq_dict = {}
for word in words:
if word in freq_dict:
freq_dict[word] += 1
else:
freq_dict[word] = 1
sorted_words = sorted(freq_dict.items(), key=lambda x: (-x[1], len(x[0])))
for word, freq in sorted_words:
print('{:<10}{}'.format(word, freq))
```
说明:
- 首先读取文件中的文本内容,并将所有单词转换为小写字母。
- 然后使用正则表达式提取所有单词,并统计它们出现的次数,将结果存储在字典 `freq_dict` 中。
- 最后,根据单词出现次数和长度进行排序,并按照指定格式输出结果。
需要注意的是,在输出结果时,我使用了格式化字符串 `{:<10}{},其中`{:<10}`表示左对齐并占用 10 个字符的空间,`{}`表示后面的参数 `word` 和 `freq`。这样可以保证输出的对齐和美观。
python本题目要求读入一个字符串,统计字符串中每个字符出现的次数,输出结果按次数降序排序
好的,可以使用字典来实现统计字符出现次数的功能,然后使用sorted函数对字典进行排序,按照字典的值(即出现次数)进行降序排序。下面是示例代码:
```python
s = input("请输入一个字符串:")
d = {}
for c in s:
if c in d:
d[c] += 1
else:
d[c] = 1
result = sorted(d.items(), key=lambda x:x[1], reverse=True)
for item in result:
print("{}: {}".format(item[0], item[1]))
```
首先读入一个字符串,然后定义一个空字典d来存储每个字符出现的次数。遍历字符串的每个字符,如果字符在字典中已经存在,就将对应的值加1,否则将该字符加入字典并初始化对应的值为1。然后使用sorted函数对字典的items进行排序,排序的关键字是每个元素的第二个值(即出现次数),并按照降序排列。最后遍历排序后的结果,输出每个字符及其出现的次数。