我有以下OrderedDict:遍歷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')])
現在我想基於值的較低和什麼是每次服用過去三年決定遍歷元素,聯盟對象。
例如上面的列表將轉向;
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')])
,因爲我想離開的人有更小的值
我試着做它本身,但不知道如何通過OrderedDict從頭到尾迭代。
我該怎麼辦?
EDITED 接聽評論:
我收到一封信的頻率的字典中的一句話:
{ 's':1, 'a':1, 'n':1, 'y': 1}
,並需要從它創建一個哈夫曼樹。
例如:
((s,a),(n,y))
我使用Python 3.3
解決您的[XY問題(HTTP:// meta.stackexchange.com/questions/66377/what-is-the-xy-problem)和這將更容易得到答案!用外行的話說 - 告訴我們你的廣泛目標是什麼,而不是如何解決你的特定方式。 –
你的意思是'顛倒了(OrderedDict.items())'? –
@adsmith你是對的 - 我編輯我的問題,實際上我需要做 – Dejell