如何在 python 中将数字映射到列表元素



我有这个包含列表的变量attributes

print(attributes)
['glucose_tol', 'age']
['glucose_tol', 'age', 'mass_index']
['glucose_tol', 'age', 'mass_index']
['age']
['age']
['glucose_tol', 'age']
['glucose_tol', 'age']
[]
['glucose_tol', 'age']
['glucose_tol', 'age', 'mass_index']

我想要的是映射glucose_tol to 17.61mass_index to 1.00age to 1.00,然后将它们相加。 因此,例如[17.61, 1.00]将被18.61,因为['17.61', '1', '1']将被19.61等,然后将所有这些相加为一个数字。

我查看了python的map()函数,但我不知道在这种情况下如何使用它,因为我在一个变量中有很多列表。

当我这样做时:

print(type(attributes))
print(attributes)

我得到 :

<class 'list'>
['glucose_tol', 'age']
<class 'list'>
['glucose_tol', 'age', 'mass_index']
<class 'list'>
['glucose_tol', 'age', 'mass_index']
and so on...

请对此进行测试:

mapping = {'glucose_tol': 17.61, 'age': 1, 'mass_index': 1}
values = [
['glucose_tol', 'age'],
['glucose_tol', 'age', 'mass_index'],
['glucose_tol', 'age', 'mass_index']
]
for i in values:
print(sum([mapping[y] for y in i]))
# with map
print(sum(list(map(lambda x: mapping[x], i))))

以下是您需要的代码:

total = 0
mapping = {
”glucose_tol”: 17.61,
”age”: 1.0,
”mass_index”: 1.0
}
for attr in attributes:
for item in attr:
total += mapping[item]

最新更新