Максимальное значение между двумя списками и их индексами - PullRequest
1 голос
/ 05 июля 2019

У меня есть вложенный словарь со списком значений, я хочу иметь - максимальное значение индекса между двумя списками - 'id' для каждого максимального значения (под id я имею в виду, из какого списка происходит поступление значения и какой у него индекс).

У меня уже есть максимальное значение индекса между двумя списками, мне нужно только 'id'.

#create dictionary:

test = {}
test['A'] = {}
test['A']['number'] = [2,2,3]
test['A']['id'] = ['x','y','z']
test['B'] = {}
test['B']['number'] = [1,3,2]
test['B']['id'] = ['a','b','c']

#this the maximum index-wise value between the two lists
max_list = [max(*l) for l in zip(test['A']['number'], test['B']['number'])]

print(max_list)

То, что я хотел бы, это еще один список со следующим: [ 'Х', 'B', 'г']

1 Ответ

2 голосов
/ 05 июля 2019

делает внутренний zip-код из id и number, поэтому мы знаем, какой идентификатор принадлежит какому номеру,

, затем используем max с пользовательской ключевой функцией (по номеру), а затем разделяем их:

test = {}
test['A'] = {}
test['A']['number'] = [2,2,3]
test['A']['id'] = ['x','y','z']
test['B'] = {}
test['B']['number'] = [1,3,2]
test['B']['id'] = ['a','b','c']

tuple_list = [max(*l, key=lambda t: t[1]) for l in zip(zip(test['A']['id'],test['A']['number']), zip(test['B']['id'],test['B']['number']))]
max_num_list = [t[1] for t in tuple_list]
max_id_list = [t[0] for t in tuple_list]

print(max_num_list)
print(max_id_list)

Вывод:

[2, 3, 3]
['x', 'b', 'z']
...