Заменить значения во вложенном списке на значения другого вложенного списка на основе условия - PullRequest
0 голосов
/ 31 января 2020

У меня есть два списка:

l = [
     ['0.064', 'facebook', '0'],  
     ['0.019', 'twitt', '0'], 
     ['0.018', 'netzwerk', '0'], 
     ['0.016', 'nachricht', '0'], 
     ['0.015', 'youtub', '0']
     ]
fl = [
     ['twitter', 'twitt', 1], 
     ['youtube', 'youtub', 2], 
     ['nachrichten', 'nachricht', 4]
     ]

Как вы можете видеть записи с индексом [1] в списке l являются основами, которые я хочу заменить на значения из списка fl.

Так что, если обе записи с индексом [1] в списке l и fl, то я хочу заменить запись с индексом [1] в l на запись с индексом [0] в fl.

Ожидаемый результат:

keys = [
     ['0.064', 'facebook', '0'],  
     ['0.019', 'twitter', '0'], 
     ['0.018', 'netzwerk', '0'], 
     ['0.016', 'nachrichten', '0'], 
     ['0.015', 'youtube', '0']
     ]

Я пробовал что-то вроде этого:

keys =[]
for l in l:
    for i in fl:
        if l[1] == i[1]:
            i[1].replace(i[1], l[0])
            keys.append(i)

Но это не работает.

Может кто-нибудь помочь?

1 Ответ

2 голосов
/ 31 января 2020

Ваш второй список лучше преобразовать в словарь и использовать O(1) lookup:

l = [
     ['0.064', 'facebook', '0'],  
     ['0.019', 'twitt', '0'], 
     ['0.018', 'netzwerk', '0'], 
     ['0.016', 'nachricht', '0'], 
     ['0.015', 'youtub', '0']
]

fl = [
     ['twitter', 'twitt', 1], 
     ['youtube', 'youtub', 2], 
     ['nachrichten', 'nachricht', 4]
]

d = dict((x[1], x[0]) for x in fl)
keys = [[x[0], d.get(x[1], x[1]), x[2]] for x in l]

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