gpt4 book ai didi

python - 您如何使用另一个包含列表的列表来排序包含列表的列表?

转载 作者:太空宇宙 更新时间:2023-11-04 07:49:04 25 4
gpt4 key购买 nike

因此,我编写了一个快速的 Python 程序来创建基于文本文件的哈夫曼树。到目前为止,一切都很好,除了我呈现生成的霍夫曼代码的方式。为了遵循惯例,我希望从最频繁到最不频繁地显示它们。幸运的是,我有另一个存储频率和对应字母的列表。此频率列表已排序。我的问题是我不知道使用哪个键来使用第一个列表中的值对第二个列表进行排序。

frequencies = [[6, 's'], [4, 'e'], [4, 'l'], [3, ' '], [2, 'h'], [1, 'a']]
huffman_codes = [['s', '10'], ['h', '011'], ['e', '111'], [' ', '101'], ['l', '00'], ['a', '001']]

我想要的是

[['s', '10'], ['e', '111'], ['l', '00'], [' ', '101'], ['h', '011'], ['a', '001']] 

因为高频霍夫曼码的代码长度最短,所以我尝试根据它们的代码长度对它们进行排序,但这不一定是真的,因为我的程序允许用户更改它们是否应该以 1 或 0 开头左边。代码未排序的原因是绘制霍夫曼树的性质。

最佳答案

您可以使用查找字典来获取 key :

frequencies = [[6, 's'], [4, 'e'], [4, 'l'], [3, ' '], [2, 'h'], [1, 'a']]
huffman_codes = [['s', '10'], ['h', '011'], ['e', '111'], [' ', '101'], ['l', '00'], ['a', '001']]

lookup = {y : x for x, y in frequencies}
result = sorted(huffman_codes, key=lambda x: lookup[x[0]], reverse=True)

print(result)

输出

[['s', '10'], ['e', '111'], ['l', '00'], [' ', '101'], ['h', '011'], ['a', '001']]

关于python - 您如何使用另一个包含列表的列表来排序包含列表的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58071686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com