先给出整体代码 要copy的朋友可以拿去
下面给出
from math import *
class FanoCod: #费诺编码
code_dict = {
}
x_p = {
}
x_plist = []
AvgCodeLength = 0
CodingEfficiency = 0
def sort(self,data:str):
# 统计信源中各个概率
self.x_p = {
} # 一个信源和概率对应的字典
x_list = []
for i in data:
if i not in x_list:
x_list.append(i)
length = len(data)
for i in x_list:
self.x_p[i] = data.count(i) / length
# 对概率进行降序排序 并返回一个列表
self.x_plist = sorted(self.x_p.items(), key=lambda kv: (kv[1], kv[0])) # 直接百度找来的字典跟据值进行排序
self.x_plist=self.x_plist[::-1]
# 更新码字表的字典值
for i in self.x_plist:
self.code_dict[i[0]]=''
# 返回一个列表 列表元素是一个元组 元组有两个东西组成,分别是字符和概率
return self.x_plist
def GeneratedCodeWord(self,list1):
if len(list1)!=1: