python defaultdict tree_Python:defaultdict每个值都会更新

我为一个愚蠢的问题工作了一个多小时,但我想不出解决办法。

我用一个初始列表创建一个defaultdict(list),并通过for循环更新这些列表。

但是,每次我更新一个值,所有其他值都会用相同的值更新。

有人能帮帮我吗?

这是我的代码:from collections import defaultdict

base = ["coucou", "salut", "tchao"]

initial_vector = [0]*len(base)

dict_vectorized_documents = defaultdict(lambda: initial_vector)

inversed_index = {"coucou": [(1, 3), (100, 4)], "salut": [(1, 1), (99, 2), (33, 3)], "tchao": [(1, 5)]}

for i, word in enumerate(base):

print(word)

for element in inversed_index[word]:

print(element[0])

print(i)

print(element[1])

print(dict_vectorized_documents[element[0]][i])

dict_vectorized_documents[element[0]][i] = element[1]

print(dict_vectorized_documents)

print(dict_vectorized_documents)

下面是我运行时的日志:

^{pr2}$

非常感谢!在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
赫夫曼编码是一种基于字符频率构建可变长度编码的压缩算法。以下是用 Python 实现赫夫曼编码的示例代码: ```python import heapq from collections import defaultdict def huffman_encoding(data): # Step 1: Determine character frequencies freq = defaultdict(int) for c in data: freq[c] += 1 # Step 2: Build Huffman tree heap = [[wt, [sym, ""]] for sym, wt in freq.items()] heapq.heapify(heap) while len(heap) > 1: lo = heapq.heappop(heap) hi = heapq.heappop(heap) for pair in lo[1:]: pair[1] = '0' + pair[1] for pair in hi[1:]: pair[1] = '1' + pair[1] heapq.heappush(heap, [lo[0] + hi[0]] + lo[1:] + hi[1:]) # Step 3: Generate Huffman codes huffman_dict = dict(heapq.heappop(heap)[1:]) encoded_data = ''.join([huffman_dict[c] for c in data]) return encoded_data, huffman_dict def huffman_decoding(encoded_data, huffman_dict): # Step 1: Invert Huffman dictionary inv_dict = {v: k for k, v in huffman_dict.items()} # Step 2: Decode encoded data decoded_data = "" i = 0 while i < len(encoded_data): j = i + 1 while encoded_data[i:j] not in inv_dict: j += 1 decoded_data += inv_dict[encoded_data[i:j]] i = j return decoded_data # Example usage data = "hello world" encoded_data, huffman_dict = huffman_encoding(data) print("Encoded data:", encoded_data) decoded_data = huffman_decoding(encoded_data, huffman_dict) print("Decoded data:", decoded_data) ``` 这段代码首先通过统计每个字符的出现频率来确定 Huffman 树。然后,它从 Huffman 树中构建了一个编码字典,其中每个字符都有一个唯一的二进制编码。接下来,它使用该字典将输入数据编码为二进制字符串。最后,它使用该字典将编码数据解码为原始数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值