Как сопоставить числа с элементами списка в python - PullRequest
0 голосов
/ 21 июня 2020

У меня есть эта переменная 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.61, mass_index to 1.00 и age to 1.00, а затем сложить их. Так, например, [17.61, 1.00] будет 18.61, для ['17.61', '1', '1'] будет 19.61 et c, а затем сложите все это до числа.

Я посмотрел на 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...

Ответы [ 2 ]

2 голосов
/ 21 июня 2020

проверьте это:

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))))

0 голосов
/ 21 июня 2020

Вот нужный вам код:

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]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...