我有一个格式为
的元组列表(变量名“值”)(1, 'K', '-', 0.8878048780487805)
(2, 'Y', '-', 0.32882882882882886)
(3, 'E', '-', 0.7216494845360825)
(4, 'Y', 'B', 0.13963963963963963)
(5, 'V', '-', 0.28169014084507044)
(6, 'E', '-', 0.39690721649484534)
.....
我有这本字典
ratios = {'K': 1.1512, 'A': 1.217, 'R': 1.1048, 'N': 1.242, 'D': 1.184,
'C': 1.237, 'Q': 1.1364, 'G': 1.2381, 'H': 1.2174, 'I': 1.1657,
'L': 1.1657, 'M': 1.1914, 'F': 1.2182, 'P': 1.1691, 'S': 1.1923,
'T': 1.2113, 'W': 1.2555, 'Y': 1.1847, 'V':1.2254}
我想做的是遍历列表,然后将索引3中的元素除以对应于索引1中字母的字典中的值。例如,由于0.8878 ...将除以1.1512,因此K,对于下一个0.3288 ....将由于Y而除以1.1847,依此类推。我还没有找到一种方法来做到这一点。
答案 0 :(得分:4)
列表理解应该在这里很棒
tuple_list =[(1, 'K', '-', 0.8878048780487805),
(2, 'Y', '-', 0.32882882882882886),
(3, 'E', '-', 0.7216494845360825),
(4, 'Y', 'B', 0.13963963963963963),
(5, 'V', '-', 0.28169014084507044),
(6, 'E', '-', 0.39690721649484534)]
ratios = {'K': 1.1512, 'A': 1.217, 'R': 1.1048, 'N': 1.242, 'D': 1.184,
'C': 1.237, 'Q': 1.1364, 'G': 1.2381, 'H': 1.2174, 'I': 1.1657,
'L': 1.1657, 'M': 1.1914, 'F': 1.2182, 'P': 1.1691, 'S': 1.1923,
'T': 1.2113, 'W': 1.2555, 'Y': 1.1847, 'V':1.2254}
[tup[3]/ratios.get(tup[1],1) for tup in tuple_list]
使用get
,因此如果ratios
中不存在密钥,它将不会引发错误
输出
[0.7711995118561331,
0.2775629516576592,
0.7216494845360825,
0.11786919864914291,
0.22987607380860978,
0.39690721649484534]
答案 1 :(得分:0)
for row in values:
print(row[1], row[3]/ratios[row[1]])
答案 2 :(得分:0)
my_tuple_list = [
(1, 'K', '-', 0.8878048780487805),
.....
]
result = {}
for (idx, key, _, number) in my_tuple_list:
result[key] = number / ratios[key]
print(result)
此解决方案展示了如何以清晰的方式拆开元组列表,这种方式可能比列表解析更容易阅读