python /集/字典/初始化

标签 python dictionary set compound-assignment

有人可以解释一下,帮助我理解这段代码是如何工作的吗?特别是 myHeap 分配是如何工作的。我知道 freq 变量被分配为字典。但是我的 myHeap 呢?是一套吗?

    exe_Data = {
      'e' : 0.124167,
      't' : 0.0969225,
      'a' : 0.0820011,
      'i' : 0.0768052,
     }

    freq = exe_Data)

    myHeap = [[pct, [symbol, ""]] for symbol, pct in freq.items()]

最佳答案

如您所说,

freq 是对字典的引用。

myHeap 是使用 list comprehension 构建的,所以它是一个列表。列表理解的一般形式是:

[ expr for x in iterable ]

所以 myHeap 将是一个列表,其中的每个元素都是一个列表,第一个元素是对应字典条目的值,第二个元素是另一个列表,其第一个元素是对应的字典条目字典的键,其第二个元素是""

您给定的代码示例中没有集合。

您可以看到它是这样工作的(为了便于阅读,我编辑了数字输出):

>>> [ 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 中的顺序。

关于 python /集/字典/初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10166987/

相关文章:

python - Enthought 安装 Canopy Windows 7 失败解析错误无效行

python - 在 Python 中查找与条件匹配的最后一项

python - 更新字典中多个键值对的性能

python - 如何从Python中的字典列表中获取所有一个键?

dictionary - 我怎样才能在groovy中进行有条件的collectEntries

c - 需要更正我的 OpenMP Mandelbrot 集代码

python - 为什么 Python `Memory Error` 和列表 `append()` 剩余大量 RAM

python - 找不到命令 'toco'

c++ - 在 C++ 中如何使用集合和获取?

在 C 中创建 Set ADT 时无法删除重复值