我有以下几点OrderedDict
:
OrderedDict([('r', 1), ('s', 1), ('a', 1), ('n', 1), ('y', 1)])
这实际上表示单词中字母的频率
在第一步中,我将使用最后两个元素创建这样的联合元组
pair1 = list.popitem()
pair2 = list.popitem()
merge_list = (pair1[0],pair2[0])
new_pair = {}
new_pair[merge_list] = str(pair1[1] + pair2[1])
list.update(new_pair);
这为我创建了以下OrderedList:
OrderedDict([('r', 1), ('s', 1), ('a', 1), (('y', 'n'), '2')])
现在我想迭代这些元素,每次都取最后三个元素,并根据值的较低和来决定union对象是什么
例如,上述列表将变为:
OrderedDict([('r', 1), (('s', 'a'), '2'), (('y', 'n'), '2')])
但上述情况是:
OrderedDict([ ('r', 1), ('s', 2), ('a', 1), (('y', 'n'), '2')])
结果将是:
OrderedDict([('r', 1), ('s', 2), (('a','y', 'n'), '3')])
因为我想让左边的值更小
我试着自己去做,但不知道如何在一个有序的过程中从头到尾迭代
我怎么做
已编辑 答复评论:
我得到了一本关于句子中字母频率的词典:
{ 's':1, 'a':1, 'n':1, 'y': 1}
需要从中创建一棵哈夫曼树
例如:
((s,a),(n,y))
我正在使用python 3.3
简单例子
输出:
您可以使用
enumerate
和iteritems
进行迭代:要么:
或:
相关问题 更多 >
编程相关推荐