首页 文章

Python - 如果new_list具有不同的值,则更新old_list

提问于
浏览
-1

我正在尝试创建一个脚本,我检查old_list和new_list . 如果new_list具有与Old_list不同的值 . 如果old_list具有比new_list更多的值/元素,它将使用if-elif语句进行检查,如果有,则不应该执行任何操作,反之亦然 .

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

输出应该是 "Element removed" ,值应该从 ['Medium', 'Easy', 'Hard'] 更新 old_list['code']['Hard', 'Easy'] . 但是现在它甚至没有通过 if any(i not in old_list['code'] for i in new_list['code']): ,因为 code 中的值都在两者中但是在new_list中没有"Medium"但是由于某种原因我没有't know it doesn'通过并且它确实改为 else .

如果new_list具有比old_list更多/更少的值/元素,并且如果元素被删除或添加,则如何更新值,如何更新值?

1 回答

  • 2

    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']
    

相关问题