python经验分享

1.热词查询

def takeSecond (elem):

   return elem[1]

sentence =input("请输入一个段落:")

list1=[]

for n in '.,!"\n':

   sentence=sentence.replace(n,' ')

word=sentence.split()

for k in word:

   list1.append(k)

list2=[]

[list2.append(i) for i in list1 if not i in list2]

list3=[]

list4=[]

for m in list2:

   o=list1.count(m)

   list3=list3+[o]

for z in range(len(list2)):

   list4=list4+[(list2[z],list3[z])]

list4.sort(key=takeSecond)

print(list4)

有几个问题和不必要的复杂部分。首先,目标是统计一个段落中每个单词的出现次数,并按出现次数从高到低排序。但是,代码中包含了一些冗余和错误的部分,比如列表推导式用来添加不重复的元素到list2,这实际上是不必要的,因为可以使用集合(set)来自动去重。另外,list3和list4的更新方式也存在一些问题。
下面是一个简化并修正后的版本:
def takeSecond(elem):
    return elem[1]

sentence = input("请输入一个段落:")
# 将段落中的标点符号替换为空格,并分割成单词列表
words = sentence.replace('.,!"\n', ' ').split()

# 使用集合去除重复的单词
unique_words = set(words)

# 创建一个字典来存储每个单词的出现次数
word_count = {}
for word in words:
    if word in unique_words:
        if word in word_count:
            word_count[word] += 1
        else:
            word_count[word] = 1

# 将字典转换为列表,以便按出现次数排序
sorted_words = sorted(word_count.items(), key=takeSecond, reverse=True)

# 打印结果
for word, count in sorted_words:
    print(f"{word}: {count}")
代码解释:
输入处理:用户输入一个段落,然后去除段落中的所有标点符号(这里使用了., ,, !, ", \n),并将段落分割成单词列表。
去重:使用集合unique_words来存储唯一的单词,但这一步实际上在统计时可以直接在字典中处理,因为字典的键自动去重。
统计单词出现次数:使用一个字典word_count来记录每个单词出现的次数。
排序和打印:将字典的项(单词和对应的出现次数)转换为列表,然后使用sorted()函数根据出现次数进行排序(降序),并打印结果。
 

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值