python 基本问题的思想

一、求最小值问题

思想①:取一个中间tmp变量,与其他所有值进行比较,将较小的值赋值给tmp
思想②:将所有的数字放在一个列表中,从头开始将相邻的值比较并交换顺序
方法③:min()、sorted()、.sort()等函数使用
文件:


赵1 钱1 孙4  李5
赵4 钱2 孙4
赵2 钱3 孙4
赵5 钱5               孙4              李5
赵6 钱6 孙4 李5
赵7 钱8 孙4 李5                慕容冲
          赵7
大众汽车    联网 汽车                 部门 负责 公司                     项目 汽车 联网
                       大众汽车                联网                部门

                       钱8 钱8 钱8 赵7
题目:'''删除单词数量最少的单词'''
import re
def stripNull(dataList):                 ---------去除正则表达式分割后的列表存在 ''
    while '' in  dataList:
        dataList.remove('')
    return dataList

with open('./Name','r',encoding = 'utf-8') as reader:
------------------------------ 统计单词数目 ----------------------------------------------
    wordCount = {}
    for line in reader:
        lineList = stripNull(re.split('[^\w]+',line.strip()))
        if not lineList:      ---- 空值跳过
            continue
        for key in lineList:              ---------- 统计单词数目(本题核心代码一)
            count = 1
            if key in wordCount:
                count += wordCount[key]
            wordCount[key] = count
-----------------------------------------------------------------------------------------

print(wordCount)
print('='*100)
min_wordValue = count
# print(min_wordValue)
---------------------------- 利用中间值寻找最小值 -----------------------------------------
min_wordKey = []
for word in wordCount:
    if wordCount[word] < min_wordValue:
        min_wordKey = [word]              -------- 取到value小值时重新覆盖key
        min_wordValue = wordCount[word]
    elif wordCount[word] == min_wordValue:
        min_wordKey.append(word)          -------- 相等时append相同value的key
print(min_wordKey,min_wordValue)
-----------------------------文本删除操作后重新写入----------------------------------------
with open('./Name','r',encoding='utf-8') as reader:
    writeList = []
    for line in reader.readlines():
        for word in min_wordKey:
            line = line.replace(word,'')        ----------- 删除单词相当于替换为空
        writeList.append(line)
with open('./Name','w',encoding='utf-8') as writer:
    writer.writelines(writeList)

二、字典按照值进行排序

按照字典值的大小对字典进行排序

1. 利用zip函数将key值和value值位置进行颠倒,再使用sorted进行排序

例如:
from random import  randint
d= {k:randint(0,20) for k in 'abcdefg'}
#{'f': 10, 'g': 16, 'a': 18, 'c': 12, 'e': 16, 'd': 7, 'b': 16}
z = list(zip(d.values(),d.keys()))
# zip函数就是将输入的序列重新组合成每个元素都是元组的列表,其中每个元素由输入序列相同位置的元素组成
#[(10, 'f'), (16, 'g'), (18, 'a'), (12, 'c'), (16, 'e'), (7, 'd'), (16, 'b')]
print(sorted(zip(d.values(),d.keys())))
#[(7, 'd'), (10, 'f'), (12, 'c'), (16, 'b'), (16, 'e'), (16, 'g'), (18, 'a')]
2.利用匿名函数进行排序
print(sorted(d.items(),key = lambda k : k[1]))
#[('d', 7), ('f', 10), ('c', 12), ('g', 16), ('e', 16), ('b', 16), ('a', 18)]
3. 使用operator.itemgetter函数
import operator
print(sorted(d.items(), key=operator.itemgetter(1)))
#[('d', 7), ('f', 10), ('c', 12), ('g', 16), ('e', 16), ('b', 16), ('a', 18)]

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值