Как сравнить элементы в списке с элементами в другом списке, элементы которого являются диктатами? - PullRequest
0 голосов
/ 03 марта 2020

У меня есть список строк, например:

list1 = ['apple', 'orange', 'pear', 'peach']

и другой список, элементы которого являются словарями, например:

list2 = [{'fruit': 'pear', 'size': 'big', 'rating': 7}, {'fruit': 'apple', 'size': 'small', 'rating': 6},{'fruit': 'peach', 'size': 'medium', 'rating': 7}, {'fruit': 'banana', 'size': 'big', 'rating': 9}]

Для каждого элемента в list1 мне нужно определить, отображается ли оно как значение для любого из ключей 'fruit' в словарях list2. В этом случае яблоко, груша и персик - все значения по крайней мере одного «фруктового» ключа в списке 2, а оранжевый - нет. Как я могу получить логическое значение true / false для каждого элемента в списке list1 как значение для любого «фруктового» ключа в списке list2?

Ответы [ 3 ]

0 голосов
/ 03 марта 2020

Это создаст словарь для каждого значения в первом списке, где значение является логическим значением, которое истинно, если значение находится в значениях list2

def ItemInList(name, list):
    for dic in list:
        for item in dic.values():
            if name == item:
                return True
    return False



list1 = ['apple', 'orange', 'pear', 'peach']
list2 = [{'fruit': 'pear', 'size': 'big', 'rating': 7}, {'fruit': 'apple', 'size': 'small', 'rating': 6},{'fruit': 'peach', 'size': 'medium', 'rating': 7}, {'fruit': 'banana', 'size': 'big', 'rating': 9}]
dict = {}

for item in list1:
    dict[item] = ItemInList(item, list2)

print(dict)
0 голосов
/ 03 марта 2020
[ x in [y['fruit'] for y in list2] for x in list1]
0 голосов
/ 03 марта 2020

Вы делаете какую-то for или list comprehension проверку, присутствует ли значение в any элементов второго list, например:

list1 = ['apple', 'orange', 'pear', 'peach']
list2 = [{'fruit': 'pear', 'size': 'big', 'rating': 7}, {'fruit': 'apple', 'size': 'small', 'rating': 6},{'fruit': 'peach', 'size': 'medium', 'rating': 7}, {'fruit': 'banana', 'size': 'big', 'rating': 9}]

booleans = [
    any(fruit == f_dict['fruit'] for f_dict in list2) for fruit in list1
]

print(booleans)
>>> [True, False, True, True]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...