Python - обновить old_list, если new_list имеет другое значение - PullRequest
0 голосов
/ 09 декабря 2018

Я пытаюсь создать скрипт, в котором я проверяю old_list и new_list.Если new_list имеет значения, отличные от Old_list.С помощью оператора if-elif он проверит, имеет ли old_list больше значений / элемента, чем new_list, и если он имеет, он ничего не должен делать и наоборот.

old_list = {'name': 'Hello', 'code': ['Medium', 'Easy', 'Hard']}

while True:

    new_list = {'name': 'Stackoverflow', 'code': ['Hard', 'Easy']}

    try:
        if any(i not in old_list['code'] for i in new_list['code']):

            if old_list['code'] > new_list['code']:
                print("Element removed")
                old_list['code'] = new_list['code']

            elif old_list['code'] < new_list['code']:
                print("New elements added")
                old_list['code'] = new_list['code']

        else:
            randomtime = random.randint(1, 2)
            time.sleep(randomtime)
            continue

    except Exception as err:
        randomtime = random.randint(1, 2)
        time.sleep(randomtime)
        continue

Выходные данные должны быть "Элемент удален ", и значение должно обновиться old_list['code'] с ['Medium', 'Easy', 'Hard'] до ['Hard', 'Easy'].Но сейчас он даже не проходит через if any(i not in old_list['code'] for i in new_list['code']):, так как значения в code находятся в обоих, но в new_list нет "Medium", но по какой-то причине, которую я не знаю, это не проходит ивместо этого он делает else.

Как я могу сделать так, чтобы он обновлял значения, если new_list имеет больше / меньше значений / элементов, чем old_list, и затем распечатывал, если элемент был удален или добавлен?

1 Ответ

0 голосов
/ 09 декабря 2018

if any(i not in old_list['code'] for i in new_list['code']):

Это условие будет выполнено, только если какой-либо элемент new_list['code'] не находится в old_list['code'].ваш new_list равен ['Hard','Easy'].Оба присутствуют в old_list, таким образом, условие не выполняется, и ваш код переходит к части else.

Если все, что вы хотите сделать, это выяснить, удалены ли элементы или добавлены элементы, вы можете просто проверить длинуnew_list и old_list.

if len(old_list['code']) > len(new_list['code']):
    print("Elements removed")
    old_list['code'] = new_list['code']
elif len(old_list['code']) < len(new_list['code']):
    print("New elements added")
    old_list['code'] = new_list['code']
else:
    temp = set(old_list['code']).intersection(set(new_list['code']))
    if len(temp) == len(old_list['code']):
        pass # No change
    else
        print "Elements Removed and Added"
        old_list['code'] = new_list['code']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...