сопоставить два списка по общему значению (id) - PullRequest
0 голосов
/ 30 мая 2019

Я хочу создать новый список таким образом, чтобы ключи соответствовали ролям.

Например, два списка:

[['9', u'bob'], ['18', u'alice']]

[['1', 'officer'], ['2', 'nurse'], ['9', 'teacher'],['18', 'unknown']]

Я бы хотел новый список:

[['9', u'bob', 'teacher'], ['18', u'alice' 'unknown']] или

[[u'bob', 'teacher'], [u'alice' 'unknown']]

Ответы [ 4 ]

1 голос
/ 30 мая 2019
d1 = dict([[9, u'bob'], [18, u'alice']])

d2 = dict([[1, 'officer'], [2, 'nurse'], ['9', 'teacher'],['18', 'unknown']])

d = []
for k in d1:
    if str(k) in d2:
       d.append((k, d1[k], d2[str(k)]))
0 голосов
/ 30 мая 2019
L1 = [[9, u'bob'], [18, u'alice']]

L2 = [[1, 'officer'], [2, 'nurse'], ['9', 'teacher'],['18', 'unknown']]


final_List = []



for l1 in L1:    
    for l2 in L2:

        if str(l1[0]) == l2[0]:

            num_L = [l1[1],l2[1]]
            final_List.append(num_L)

print(final_List)

---------
Output:
---------
[['bob', 'teacher'], ['alice', 'unknown']]
0 голосов
/ 30 мая 2019

Вот простое решение -

  list_1 = [[9, u'bob'], [18, u'alice']]
  list_2 = [[1, 'officer'], [2, 'nurse'], [9, 'teacher'],[18, 'unknown']]
  new_list = []
  for i in list_1:
      for j in list_2:
          if i[0]==j[0]:
              new_list.append([i[1],j[1]])

Вот одна строка для того же, но она помещает элементы в кортеж -

  >> [(x[1], y[1]) for x in list_1 for y in list_2 if x[0] == y[0]]

  [('bob', 'teacher'), ('alice', 'unknown')]

Чтобы получить список списков -

  >> [list(elem) for elem in [(x[1], y[1]) for x in list_1 for y in list_2 if x[0] == y[0]]]

  [['bob', 'teacher'], ['alice', 'unknown']]
0 голосов
/ 30 мая 2019

попробуйте это:

names = [[9, u'bob'], [18, u'alice']]

roles = [[1, 'officer'], [2, 'nurse'], [9, 'teacher'],[18, 'unknown']]

mapper = dict(roles)
print([[x[0],x[1],mapper[x[0]]] for x in names])

при условии, что числа в ролях имеют один и тот же тип, т. Е. Либо целые числа, либо строки. В этом случае я взял их как целые числа для совпадения с именами.

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