我有一张单子
defaultdict(list,
{37.0: ['C22H27O7',
'C21H23O8',
'C25H35O7',
'C24H31O8',
'C23H27O9',
'C22H23O10',
'C21H19O11',
'C20H15O12',
'C19H11O13'],
111.0: ['C22H27O7',
'C19H15O10',
'C25H35O7',
'C22H23O10',
'C24H31O8',
'C21H19O11',
'C23H27O9',
'C20H15O12',
'C19H11O13'],
74.0: ['C21H23O8',
'C19H15O10',
'C25H35O7',
'C23H27O9',
'C24H31O8',
'C22H23O10',
'C21H19O11',
'C20H15O12',
'C19H11O13'],
148.0: ['C25H35O7',
'C21H19O11',
'C24H31O8',
'C20H15O12',
'C23H27O9',
'C19H11O13'],
185.0: ['C25H35O7', 'C20H15O12', 'C24H31O8', 'C19H11O13'],
222.0: ['C25H35O7', 'C19H11O13']})
我有一个calculateMass函数
def calculateMass(formula):
if(formula[0:1] == "C"):
# print(add[k]1:3)
C = int(formula[1:3])
C = C*12000
print(C)
if(formula[3:4] == "H"):
H = (int(formula[4:6]))
H = H*1008
if(formula[6:7] == "O"):
O=(int(formula[7:9]))
O=O*15995
total = O + C + H
print(total)
我的目标是根据质量削减我的列表,例如,我期望的输出应该是:
[1] 37 --> C22H27O7--> C21H23O8 (Cut From here because next element's mass [C25H35O7] > [C21H23O8])
[2] 37 --> C25H35O7 --> C24H31O8 --> C23H27O9 --> C22H23O10 --> C21H19O11 --> C20H15O12 --> C19H11O13 (Since masses are decreasing we do not need to cut.)
并迭代其他键值
[1] 111 --> ......
如何在Python中执行此操作?你知道吗
您没有指定myList的外观,但是假设它只是一个公式字符串列表,您可以执行以下操作:
这样,您将得到一个字典,它的键将是mass,它的值将是公式列表。你知道吗
然后可以使用
打印按质量排序的子列表。你知道吗
如果您想对每个原始字典的列表执行此操作,我建议您将整个内容放在一个函数中,并为要处理的每个列表调用它。你知道吗
假设您只需要输出(而不是另一个具有拆分列表的数据结构),您可以迭代公式列表,将每个值
calculateMass(myList[index][i])
与前一个值calculateMass(myList[index][i-1])
进行比较,如下所示:相关问题 更多 >
编程相关推荐