У меня возникли проблемы с сопоставлением вложенного списка со словарем с несколькими значениями. Словарь и вложенный список, как так:Python: сравнение вложенных списков и словарей
list = [[['a']], [['b']], [['c'], ['d']], [['e'], ['f'], ['g']]]
dict = {'adv0' : ('a', 'b'), 'adv1' : ('f', 'c'), 'adv2' : ('d', 'e', 'q')}
Я хочу, чтобы создать массив, где каждый подсписок («а», «б», «с & d», «е & е & г») является по сравнению с каждым значением, и если какой-либо элемент в подсписке является членом этого значения, он создает запись 0, иначе создается 1 запись.
[0, 1, 1], поскольку 'a' находится только в adv0, [0, 1, 1], так как 'b' находится только в adv0, [1, 0, 0], так как adv1 и adv2 содержат 'c 'или' d ', [1, 0, 0], так как adv1 и adv2 содержат один из' e ',' f 'или' g '. Следовательно, мы получаем массив [0,1,1,0,1,1,1,0,0,1,0,0].
Следующий код моя ужасная попытка найти решение, которое не работает:
l = []
for sublist in list:
for items in sublist:
for x in items:
for key in dict:
if x in dict[key]:
l.extend('0')
elif x not in dict[key]:
l.extend('1')
print l
Обратите внимание, что словари не упорядочены. Похоже, что вы хотите, чтобы получившийся список упорядочивался естественным путем на клавишах dict, но было бы полезно указать это явно. –