Python 3: списки и словарь. Как я могу создать словарь, который скажет мне, из какого списка каждый элемент? - PullRequest
0 голосов
/ 06 февраля 2020

с учетом этих двух списков:

lst_1=['Apple', 'pie', 'is', 'the', 'most', 'delicious'] #list 1
lst_2=['It', 'is', 'Americas', 'best'] #list 2

как поместить их в словарь, чтобы он сказал мне, из какого списка (1 или 2) он, например:

d['Apple'] = [1] #"Apple "is in list 1
d['pie']=[1]     #"pie" is in list 1
d['is']=[1,2] #"is" is in list 1 and 2
d['It']=[2]   # "It" is in list 2

Ответы [ 7 ]

3 голосов
/ 06 февраля 2020

Как насчет этого:

myDictionary= {
  "list1" : {
    "1" : "Apple",
    "2" : "pie",
    "3" : "is",
    "4" : "most",
    "5" : "delicious."
  },
  "list2" : {
    "1" : "It",
    "2" : "is",
    "3" : "America's",
    "4" : "best,"
  }
}

Надеюсь, это сработает.

0 голосов
/ 06 февраля 2020

Вы можете сделать что-то вроде этого:

lst_1=['Apple', 'pie', 'is', 'the', 'most', 'delicious']
lst_2=['It', 'is', 'Americas', 'best']

dic={}
joined_list= lst_1 + lst_2
for e in joined_list:
    if e in lst_1 and e in lst_2:
        dic[e] = [1, 2]
    elif e in lst_1:
        dic[e] = [1]
    elif e in lst_2:
        dic[e] = [2]
print(dic)
0 голосов
/ 06 февраля 2020

Вы можете использовать диктовки для формирования dict объекта:

d={i : [1] for i in lst_1}
d.update({i: d.get(i, []) + [2] for i in lst_2})
0 голосов
/ 06 февраля 2020

Использование defaultdict:

from collections  import defaultdict
lst_1=['Apple', 'pie', 'is', 'the', 'most', 'delicious'] #list 1
lst_2=['It', 'is', 'Americas', 'best'] #list 2
d = defaultdict(list)
for i in lst_1:
    d[i].append(1)
for i in lst_2:
    d[i].append(2)

dict(d) дает

{'Apple': [1], 'pie': [1], 'is': [1, 2], 'the': [1], 'most': [1], 'delicious': [1], 'It': [2], 'Americas': [2], 'best': [2]}
0 голосов
/ 06 февраля 2020
lst_1=['Apple', 'pie', 'is', 'the', 'most', 'delicious'] #list 1
lst_2=['It', 'is', 'Americas', 'best'] #list 2

d = {}
for index, i in enumerate([lst_1, lst_2]):
    for j in i:
        d.setdefault(j, set([]))
        d[j].add(index+1)

print(d)
0 голосов
/ 06 февраля 2020
lst_1=['Apple', 'pie', 'is', 'the', 'most', 'delicious'] #list 1
lst_2=['It', 'is', 'Americas', 'best'] #list 2

d = {}

for val in lst_1:
    d[val] = [1]

for val in lst_2:
    if val not in d:
        d[val] = [2]
    else:
        d[val] = [1,2]


print(d)
0 голосов
/ 06 февраля 2020

Вы можете попробовать следующее:

d= {}
lst = set(lst_1 + lst_2)
for i in lst:
    if i in lst_1 and i in lst_2:
        d[i] = [1,2]
    elif i in lst_2:
        d[i] = [2]
    elif i in lst_1:
        d[i] = [1]
print(d)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...