Вы можете построить dict
для каждого из 2 списков ввода, например:
dict_a = {
e['username']: e['userid']
for e in list_a}
dict_b = {
e['username']: e['userid']
for e in list_b}
Затем построить новый dict
, объединяющий данные из обоих:
dict_result = {}
for username, userid in dict_a.items():
if username not in dict_result:
dict_result[username] = {}
dict_result[username]['userid_one'] = userid
for username, userid in dict_b.items():
if username not in dict_result:
dict_result[username] = {}
dict_result[username]['userid_two'] = userid
Это также можно сократить до:
import collections
dict_result = collections.defaultdict(dict)
for label, d in [('one', dict_a), ('two', dict_b)]
for username, userid in d.items():
dict_result[username]['userid_{}'.format(label)] = userid
Наконец, если вам действительно нужен конечный результат в виде списка:
list_result = []
for username, d in dict_result.items():
# 'd' already contains the other data, we just add the 'username'
d['username'] = username
list_result.append(d)