只有 for 循环迭代的最后结果被保存在字典中

Only the last result of a for-loop iteration is being saved in a dictionary

我是 Python 的新手,我目前正在尝试将 for 循环的结果存储在字典中。我的目标是将“比率”作为键,将“频率”作为值。我想遍历一个唯一比率列表,并在名为 comparison_dict 的字典中对它们进行计数。我已经完成了那部分,为此我首先从 comparison_dict 值 (list_orig_ratios).

创建了一个类型列表
frequencies = dict()
sorted_unique_ratios = sorted(unique_ratios)

list_orig_ratios = list(comparison_dict.values())
for ratio in sorted_unique_ratios:
    freq = list_orig_ratios.count(ratio)
    frequencies = {ratio:freq}
    print(frequencies)

当我在 for 循环的末尾添加打印命令时,我可以看到所有比率对及其计数,但每个比率都是一个单独的字典。我想将它们全部作为一个字典,以比率作为键,频率(计数)作为值。如果我 运行 循环外的打印命令,我会看到只有最后一个 key:value 对保存在那里。

如何将此 for 循环的结果存储在单个字典中?

您在每次迭代中将新的 dict 分配给名称 frequencies,而不是将新的键值对添加到现有的 dict

for ratio in sorted_unique_ratios:
    freq = list_orig_ratios.count(ratio)
    <b>frequencies[ratio] = freq</b>
    print(frequencies)

不过,一个更简单的解决方案是使用字典理解:

frequencies = {ratio: list_orig_ratios.count(ratio) for ratio in sorted(unique_ratios)}