Ваш код идет не так в строке zip. Во-первых,
sublist = [['how', 'are', 'good']
['bad', 'BAD', 'hello']]
, в то время как
c = [2, -4]
(подсписок, c) работает для первых двух элементов, а не для элементов, удовлетворяющих условию. Чтобы это работало, должен быть создан другой список, состоящий из
[['how', 'are'], ['hello']]
Но это не дает возможности сжать значения, потому что zip не работает в списке списков. Таким образом, решение этой проблемы выходит для хранения значения c [i] для i-го элемента b. Если какой-либо подэлемент удовлетворяет условию, обновите словарь, в противном случае продолжайте повторять и изменять значение c [i]. Этот метод реализован следующим образом: -
dic = {}
for i in range(len(b)):
score = c[i]
for j in b[i]:
if j.lower() not in a.keys():
dic.update({j : score})