【问题标题】:How to check if some values of a dict is in nested dict and return location?如何检查字典的某些值是否在嵌套字典中并返回位置?
【发布时间】:2021-03-28 20:17:45
【问题描述】:

我有一个包含以下值的嵌套字典:

 bcs = {'L_1':{'Side':'l','Type':'c', 'T':''} , 'L_2':{'Side':'s','Type':'c', 'T':''}}
 bps = {'L_1':{'Side':'l','Type':'p', 'T':''}, 'L_2':{'Side':'s','Type':'p', 'T':''}}
 mA = {'BC':bcs,'BP':bps}

我有一个带有数据的“向量”:

vData = {'Side':'s','Type':'c', 'T':120}

我想检查 vData 的 'Side' 和 'Type' 的值是否以 mA 为单位以及它们在哪里。

例如,我们知道对于 mA['bcs']['L_2'] 中的这些值存在 vData。然后我想存储位置,即: ['bcs']['L_2'] 在列表或某处。 'matrix' mA 中可能有更多命中。

我该如何解决这个问题?我还尝试将其转换为二进制或数值(如果您愿意,可以使用映射函数)以创建搜索空间,但不知道如何继续。

编辑:

输入:

vData = {'Side':'s','Type':'c', 'T':120}

输出:

Location = ['bcs']['L_2']

因为:

bcs = {'L_1':{'Side':'l','Type':'c', 'T':''} , 'L_2':{'Side':'s','Type':'c','T':''}}

【问题讨论】:

  • 好的,我已经阅读了这个问题三遍,但我仍然没有得到您的要求。你是说你想要一个函数get_address(vData, bcs) == 'L_2'get_address(vData, bps) == 'L_2'?或者是其他东西?如果您将所需功能的预期输入/输出行为放在您的问题中,将会很有帮助。

标签: python dictionary search


【解决方案1】:

使用列表推导:

result = [
    (k1, k2) 
    for k1, d in mA.items() 
    for k2, v in d.items() 
    if v['Side'] == vData['Side'] and v['Type'] == vData['Type']
]

结果:

[('BC', 'L_2')]

【讨论】:

    【解决方案2】:

    试试这个代码:

    for (x,y) in vData.items():
        for (mA1,mA2) in mA.items():
            for (search1,search2)in mA2.items() :
                if (x,y) in search2.items():
                    print("found '{}':'{}'".format(x,y))
    

    希望这是您正在寻找的答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-13
      • 2022-01-15
      • 2015-06-02
      • 1970-01-01
      • 2013-09-05
      • 2019-02-12
      • 2014-05-18
      相关资源
      最近更新 更多