python - Python,从数据输入中添加两个值
问题描述
直截了当:我的意见:
d = {'Key1': [('aaaaa', '834M', '118G'),
('bbbbb', '216G', '220.3M')],
'Key2': [('ccccc', '790M', '162G'),
('ddddd', '203G', '34.8G'),
('eeeee', '126M', '112G')],
'Key3': [('fffff', '921G', '30.8M'),
('ggggg', '235G', '2.63G')]}
到目前为止,我有这个并且它有效,但仅适用于 G (Gb) 值:
for p, vl in pools.items():
alloc = ('{}G'.format(round(sum([float(j[1].split('G')[0]) for j in vl]))))
free = ('{}G'.format(round(sum([float(j[2].split('G')[0]) for j in vl]))))
I need to add values accordingly:
from key1 aaaaa value 834M +
from key1 bbbbb value 216G
then
from key1 aaaaa value 118G +
from key1 bbbbb value 220.3M
and so on for every key
so the output will look like this:
216.8G 118.2G
等等。
解决方案
我将对此进行一些重构,以使行保持在 80 个字符以内并提高可读性:
def split(j, i):
if 'G' in j[i]:
return float(j[i].split('G')[0])
return float(j[i].split('M')[0]) / 1000
for p, vl in pools.items():
alloc = ('{}G'.format(round(sum([split(j, 1) for j in vl]))))
free = ('{}G'.format(round(sum(split(j, 2) for j in vl]))))
您还可以将拆分函数编写为:
def split(j, i):
suffix = j[i][-1]
value = float(j[i][:-1])
return value if suffix == 'G' else value / 1000
推荐阅读
- r - R.使用向量中元素的条件组合创建数据框
- firebase - 从嵌套在 Firestore 和 Flutter 中的数组中的地图中获取数据
- formatting - 如何在 Stata esttab 的 LaTeX 输出表中按模型对回归进行分组
- asp.net-mvc - 在 ViewBag Contents 中的 Select2 中添加和预选值
- leaflet - 单击时如何在 0.5 和 1 之间更改标记的不透明度
- forestplot - 森林图函数中的错误代码:平均值,下限和上限包含无效的列数平均列:3 下限列:上限列:
- inspect-element - 有没有办法永久关闭 Chrome 检查控制台?我在浏览时遇到问题,因为检查元素一次又一次地打开
- python - 当从 cmd 运行但在 Anaconda Prompt 中运行时,Pyinstaller EXE 在 Seaborn relplot 崩溃
- r - 如何在 Shiny 中加载时删除错误
- shell - 从控制台输出中找到特定字符串后,有没有办法在 jenkins 中运行 shell 脚本?