pycharm 我不知道在嵌套循环中if/else是如何工作的

von4xj4u  于 2023-02-12  发布在  PyCharm
关注(0)|答案(2)|浏览(124)

请告诉我一些我不明白的事情

test1 = [{'DataTime': '03.02.2023', 'id': '112233', 'idd': '0000123'},
         {'DataTime': '03.02.2023', 'id': '112234', 'idd': '0000124'},
         {'DataTime': '03.02.2023', 'id': '112235', 'idd': '0000125'},
         {'DataTime': '03.02.2023', 'id': '112236', 'idd': '0000126'}
         ]
test2 = [
         {'Data': ['03.02.2023'], 'id': ['112233'], 'idd': ['333444']},
         {'Data': ['03.02.2023'], 'id': ['112255'], 'idd': ['555535']},
         {'Data': ['03.02.2023'], 'id': ['112288'], 'idd': ['223455']}
         ]
​
for a in test1:
    for b in test2:
        if b['id'][0] == a['id']:
            print(a)

如果B ['id'][0] == a ['id']时执行:打印匹配的内容{'DataTime':“2023年2月3日”,“身份证”:“112233”、“识别号”:“0000123”}
我不明白为什么当我这样做如果B ['id'][0]!= a ['id']一切都显示,很多时候,为什么它不显示什么是不存在的?例如:

{'DataTime': '03.02.2023', 'id': '112234', 'idd': '0000124'},
         {'DataTime': '03.02.2023', 'id': '112235', 'idd': '0000125'},
         {'DataTime': '03.02.2023', 'id': '112236', 'idd': '0000126'}

谢谢
告诉我,很可能可以进行不同的比较。为什么不适用于if b ['id'][0]!= a ['id']:?那么,怎样才能有所不同?

zyfwsgd6

zyfwsgd61#

您使用的是嵌套的for循环,因此if比较将针对两个列表中每个项的每个组合执行一次。
第一个列表有四个项目,第二个列表有三个项目,因此有4x3 = 12个组合。
只有一个ID匹配的组合:两个列表中的第一项。因此,如果打印 matches,则a将打印一次。
但是有11个id不匹配的组合,所以如果你打印不匹配的组合,那么a将被打印11次。

67up9zun

67up9zun2#

for a in test1:
    if all(a['id'] != b['id'][0] for b in test2):
        print(a)

相关问题