猿问

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

我正在尝试制作一个脚本,在其中检查 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

输出应该是“元素中删除”和值应更新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 中没有“中”,但由于某种原因,我不知道它没有通过,else而是通过了。


如果 new_list 的值/元素比 old_list 多/少,我怎么可能使它更新值,然后打印出元素是否被删除或添加?


慕运维8079593
浏览 241回答 1
1回答

天涯尽头无女友

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']):&nbsp; &nbsp; print("Elements removed")&nbsp; &nbsp; old_list['code'] = new_list['code']elif len(old_list['code']) < len(new_list['code']):&nbsp; &nbsp; print("New elements added")&nbsp; &nbsp; old_list['code'] = new_list['code']else:&nbsp; &nbsp; temp = set(old_list['code']).intersection(set(new_list['code']))&nbsp; &nbsp; if len(temp) == len(old_list['code']):&nbsp; &nbsp; &nbsp; &nbsp; pass # No change&nbsp; &nbsp; else&nbsp; &nbsp; &nbsp; &nbsp; print "Elements Removed and Added"&nbsp; &nbsp; &nbsp; &nbsp; old_list['code'] = new_list['code']
随时随地看视频慕课网APP

相关分类

Python
我要回答