freq
あなたが言ったように、辞書への参照です。
myHeap
リスト内包表記を使用して構築されているため、リストです。リスト内包表記の一般的な形式は次のとおりです。
[ expr for x in iterable ]
リストmyHeap
も同様です。各要素は、最初の要素が対応する辞書エントリの値であるリストであり、2 番目の要素は、最初の要素が辞書の対応するキーであり、2 番目の要素が である別のリストです""
。
指定されたコード サンプルにはセットがありません。
これが次のように機能していることがわかります (読みやすくするために数値出力を編集しました)。
>>> [ symbol for symbol, pct in freq.items() ]
['a', 'i', 'e', 't']
>>> from pprint import pprint # Yay, pretty printing
>>> pprint([ [pct, symbol] for symbol, pct in freq.items() ])
[[0.0820011, 'a'],
[0.0768052, 'i'],
[0.1241670, 'e'],
[0.0969225, 't']]
>>> pprint([ [pct, [symbol, ""]] for symbol, pct in freq.items() ])
[[0.0820011, ['a', '']],
[0.0768052, ['i', '']],
[0.1241670, ['e', '']],
[0.0969225, ['t', '']]]
Python の辞書は要素の順序を保持しないため、freq
要素が最終的にどの順序になるかは保証されないことに注意してくださいmyHeap
。