python - 迭代创建字典的麻烦
问题描述
我玩python只是为了学习。我有一本字典
chrom_freq_0
{'A': 27.5,
'A+': 29.14,
'B': 30.87,
'C': 16.35,
'C+': 17.32,
'D': 18.35,
'D+': 19.45,
'E': 20.6,
'F': 21.83,
'F+': 23.12,
'G': 24.5,
'G+': 25.96}
我想在另一个字典中包含它自己的几个修改版本(以及它自己的原始版本),但我不知道如何正确迭代。它仅包括修改后的字典字典的每个版本中的最后一项。
这是我的代码
Chrom_Freq = {0 : chrom_frq_0}
for i in range (1, 9):
for note, freq in chrom_freq_0.iteritems():
Chrom_Freq[i] = {note : freq*(2**i)}
我明白了:
Chrom_Freq
--->
{0: {'A': 27.5,
'A+': 29.14,
'B': 30.87,
'C': 16.35,
'C+': 17.32,
'D': 18.35,
'D+': 19.45,
'E': 20.6,
'F': 21.83,
'F+': 23.12,
'G': 24.5,
'G+': 25.96},
1: {'G+': 51.92},
2: {'G+': 103.84},
3: {'G+': 207.68},
4: {'G+': 415.36},
5: {'G+': 830.72},
6: {'G+': 1661.44},
7: {'G+': 3322.88},
8: {'G+': 6645.76}}
解决方案
的每个赋值都会Chrom_Freq[i]
替换上一个赋值中的值。
为了积累内容,如果密钥存在,您需要更新现有内容:
if i in Chrom_Freq:
Chrom_Freq[i].update({note : freq*(2**i)})
else:
Chrom_Freq[i] = {note : freq*(2**i)}
推荐阅读
- javascript - Vue中实现tab的正确方法——依赖父子
- python - 计算时间间隔内列值的平均值
- python-3.x - python中的雪花连接错误“ snowflake.connector.errors.ProgrammingError:251005:用户为空”
- elasticsearch - 在查询阶段之前查找文档 ID?
- android - 方向改变时多次加载片段
- android-recyclerview - ReactiveUI - 流之间的动态数据切换到单个 ReadOnlyObservableCollection
- typescript - 泛型函数的 TypeScript 条件返回类型
- azure - 机器人频道注册 - Azure 机器人框架
- c - 为什么 srand (time (NULL)) 的 NULL 给 time () 一个随机值?
- python - Selenium find_element_by_id - 提取临时元素 ID