python - 向字典中添加算术值?

标签 python

我有一个字典,如下图。

band1= {'channel1': 10564, 'channel2': 10589, 'channel3': 10612, 'channel4': 10637,'channel5': 10662, 'channel6': 10687,
'channel7': 10712, 'channel8': 10737, 'channel9': 10762, 'channel10': 10787,'channel11': 10812, 'channel12': 10837, }

我想要一种编辑这本词典的好方法。对于每个条目,我想要添加的另一个值是 value/5,输入的第三个值是 value/5-190

然后字典看起来像(表达式实际转换为它们的最终值):

band1= {'channel1': [10564, 10564/5, 10564/5-190], 'channel2': [10589,10589/5,10589/5-190], 'channel3': [10612,10612/5,10612/5-190], 'channel4': [10637,10637/5,10637/5-190],
'channel5': [10662,10662/5,10662/5-190], 'channel6': [10687,10687/5,10687/5-190],
'channel7': [10712, 10712/5, 10712/5-190], 'channel8': [10737,10737/5,10737/5-190], 'channel9': [10762,10762/5,10762/5-190], 'channel10': [10787,10787/5,10787/5-190],'channel11': [10812,10812/5,10812/5-190], 'channel12': [10837,10837/5,10837/5-190]}

我必须对很多条目执行此操作,因此如果我可以以 Pythonic 方式添加它们,那将比将它们全部键入要好。 5 或 190 对于其他词典也是可变的,因此能够轻松地改变它会很好,这是不硬编码的另一个原因。例如,另一本字典可能规定我需要除以 4 并为第二个元素加 200,然后对于第三个元素我可能必须添加另一个变量数。

band2= {'channel1': [10564, 10564/4+200, 10564/4+200+100]

最佳答案

听写理解可以解决问题:

var1 = 5
var2 = -190
{k: [v, v/var1, v/var1+var2] for k, v in band1.iteritems()}

对于 Python 3,将 .iteritems() 替换为 .items(),对于 Python 2.6 及之前,使用生成器表达式生成 (key, value)元组:

dict((k, [v, v/var1, v/var1+var2]) for k, v in band1.iteritems())

对于您的第二个字典,var1var2 然后分别设置为 4200

演示:

>>> {k: [v, v/var1, v/var1+var2] for k, v in band1.iteritems()}
{'channel11': [10812, 2162, 1972], 'channel10': [10787, 2157, 1967], 'channel3': [10612, 2122, 1932], 'channel2': [10589, 2117, 1927], 'channel1': [10564, 2112, 1922], 'channel7': [10712, 2142, 1952], 'channel6': [10687, 2137, 1947], 'channel5': [10662, 2132, 1942], 'channel4': [10637, 2127, 1937], 'channel9': [10762, 2152, 1962], 'channel8': [10737, 2147, 1957], 'channel12': [10837, 2167, 1977]}

关于python - 向字典中添加算术值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16173296/

相关文章:

python - 单击图像1次,获取位置并销毁OpenCv窗口

python - 如何在Django中使用FileSystemStorage上传OpenCV修改的图像文件?

python - Python绘制网格,颜色对应不同的值

python - 在 Python 中创建二维点列表的更优雅的方法

python - 如何网络抓取空表数据

python - 使用 Python 3 查询 Microsoft AD 的最佳方式

python - Numpy:从给定范围生成组合的有效方法

python - 在 python 中将字典的字典写入 csv

python - pip找不到opencv

python - 循环内绘制的子图图表非常挤压