def get_dict_from_singal(): singal_dict = {} singal_dict['A'] = (0, 0.1) singal_dict['B'] = (0.1, 0.5) singal_dict['C'] = (0.5, 0.7) singal_dict['D'] = (0.7, 1) return singal_dict修改为从文件读入字符,按出现的概率,在0-1区间划分
时间: 2024-01-29 18:04:56 浏览: 58
pytorch 状态字典:state_dict使用详解
5星 · 资源好评率100%
可以按照以下步骤实现:
1. 从文件读入字符,并统计每个字符出现的次数,计算出每个字符出现的概率。
2. 对概率进行排序,按照概率从小到大为每个字符划分区间。
3. 将每个字符和对应的区间存入字典中,并返回该字典。
下面是代码实现:
```python
def get_dict_from_file(filename):
# 统计每个字符出现的次数
char_count = {}
with open(filename, 'r') as f:
data = f.read()
for char in data:
if char not in char_count:
char_count[char] = 1
else:
char_count[char] += 1
# 计算每个字符出现的概率
total_count = sum(char_count.values())
char_prob = {}
for char in char_count:
char_prob[char] = char_count[char] / total_count
# 按照概率从小到大排序,并划分区间
sorted_char_prob = sorted(char_prob.items(), key=lambda x: x[1])
singal_dict = {}
start, end = 0, 0
for i in range(len(sorted_char_prob)):
char, prob = sorted_char_prob[i]
end = start + prob
singal_dict[char] = (start, end)
start = end
return singal_dict
```
其中,filename 是存储字符的文件名。函数返回一个字典,字典的 key 是字符,value 是该字符对应的区间。
阅读全文