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

时间:2020-01-21 04:08:50

标签: python

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

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

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

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

运行此命令时,我只会返回“无”。

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

    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))

1 个答案:

答案 0 :(得分: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"]