为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕运维8079593 2021-09-11 17:50:25
我正在尝试制作一个脚本,在其中检查 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 多/少,我怎么可能使它更新值,然后打印出元素是否被删除或添加?
查看完整描述

1 回答

?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

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


查看完整回答
反对 回复 2021-09-11
  • 1 回答
  • 0 关注
  • 240 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信