Выберите один из двух вложенных листов на основе одного из значений - PullRequest
0 голосов
/ 30 марта 2020

У меня есть два списка с несколькими вложенными списками. Каждый вложенный список имеет целое число в качестве первого элемента и строку в качестве второго. Нужен другой список, который содержит вложенные списки со строками в обоих заданных списках и большим числом в качестве первого элемента.

given

a = [[1,'one'], [2,'two'], [3,'three'],[10,'ten']]
b = [[3,'one'], [1,'two'],[5,'three']]

needed:

c = [[3,'one'],[2,'two'],[5,'three']]

1 Ответ

1 голос
/ 30 марта 2020

с вашими данными вы можете использовать понимание списка со встроенной функцией zip:

a = [[1,'one'], [2,'two'], [3,'three'],[10,'ten']]
b = [[3,'one'], [1,'two'],[5,'three']]


[[max(e[0], i[0]), e[1]] for e, i in zip(a, b)]

output:

[[3,'one'],[2,'two'],[5,'three']]

если в ваших списках a и b у вас нет подсписков в том же порядке (базовая строка), которые вы могли бы использовать:

da = dict((e[::-1] for e in a))
db = dict((e[::-1] for e in b))

[[max(da[k], db[k]), k] for k in set(da).intersection(db)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...