要在嵌套字典中搜索特定键吗?

问题描述 投票:0回答:1

我有2个条形码扫描仪,需要对照嵌套字典进行检查。

首先,我需要找到与scanner1中匹配的'外部'条形码相对应的密钥。

我需要运行密钥并找到相应的“内部”条形码,然后将结果与scan2比较,以查看它们是否匹配。这检查我们的纸箱中是否有正确的物品。

我已经尝试了一些示例,但是它们似乎没有用。

当我运行此程序时,我只会返回None。

这是我必须搜索的词典的一部分。

    barcodes = {1: {'Outer': '10000261344131', 'Inner': '26214092', 'Lane': '3', 'Group': '1'},
               2: {'Outer': '10000261343905', 'Inner': '26134390', 'Lane': '3', 'Group': '1'},
               3: {'Outer': '10000261343769', 'Inner': '26134376', 'Lane': '1', 'Group': '1'},
               4: {'Outer': '14088700046026', 'Inner': '4088700046029', 'Lane': '0', 'Group': '0'},
               5: {'Outer': '19100010090011', 'Inner': '9100010090011', 'Lane': '1', 'Group': '0'},
               6: {'Outer': '19300601775283', 'Inner': '9300601775286', 'Lane': '1', 'Group': '0'},
               7: {'Outer': '19300633223844', 'Inner': '9300633223847', 'Lane': '1', 'Group': '0'}}

    scanner1 = '19300633223844'
    scanner2 = '9300633223847'

    def search(values, searchFor):
            for k in values:
                for v in values[k]:
                    if searchFor in v:
                        return k
            return None

        #Checking if string 'Mary' exists in dictionary value
        groupfind = search(barcodes, str(scanner1))
python
1个回答
0
投票

首先,我需要找到与匹配项相对应的密钥扫描仪1的“外部”条形码。

matches = [k for k, v in barcodes.items() if v["Outer"] == scanner1]

我需要运行密钥并找到相应的“内部”条形码,然后将结果与scan2比较,看它们是否匹配。这检查我们的纸箱中装着正确的物品。

if matches:
    key = matches[0]  # Assumes only 1 match can be found in the first step.
    if barcodes[key]["Inner"] == scanner2:
        print("Inner matches scanner2")
    else:
        print("Inner doesn't match scanner2"]
© www.soinside.com 2019 - 2024. All rights reserved.