在Python的字典元组键中搜索键

时间:2019-04-05 11:45:58

标签: python python-3.x

在尝试运行以下代码时:

temp3 = {
    ('EUR-EURIBOR-1Y-SWAPTION-PHYSICAL-ANNUAL-BOND-QUANTO-USD','EUR-EURIBOR-1Y-SWAPTION-PHYSICAL-ANNUAL-BOND-QUANTO-GBP'):'EURIBOR_EUR_1Y'
}

print (temp3.get('EUR-EURIBOR-1Y-SWAPTION-PHYSICAL-ANNUAL-BOND-QUANTO-USD'))

输出:

None

预期:

EURIBOR_EUR_1Y

4 个答案:

答案 0 :(得分:0)

实际上正确的密钥是('EUR-EURIBOR-1Y-SWAPTION-PHYSICAL-ANNUAL-BOND-QUANTO-USD','EUR-EURIBOR-1Y-SWAPTION-PHYSICAL-ANNUAL-BOND-QUANTO-GBP')

因此,如果您尝试:

print(temp3.get(('EUR-EURIBOR-1Y-SWAPTION-PHYSICAL-ANNUAL-BOND-QUANTO-USD','EUR-EURIBOR-1Y-SWAPTION-PHYSICAL-ANNUAL-BOND-QUANTO-GBP')))

您将获得:

EURIBOR_EUR_1Y

答案 1 :(得分:0)

您没有使用字典的完整密钥。

尝试使用完整密钥

(temp3.get('EUR-EURIBOR-1Y-SWAPTION-PHYSICAL-ANNUAL-BOND-QUANTO-USD','EUR-EURIBOR-1Y-SWAPTION-PHYSICAL-ANNUAL-BOND-QUANTO-GBP'))
'EUR-EURIBOR-1Y-SWAPTION-PHYSICAL-ANNUAL-BOND-QUANTO-GBP'

答案 2 :(得分:0)

您期望>> l = Library() >> l.book_manager.book_1 {'name': 'python'} >> l.book_manager.book_2 <__main__.Book object at 0x7f56adf11278> 函数解压缩get值并在元组内部进行搜索;那样行不通。

正确的方法是使用创建key时使用的key

示例:

dict

哪个将输出密钥;要获取具有匹配键的所有值,可以使用以下命令:

temp3 = {
    ('EUR-EURIBOR-1Y-SWAPTION-PHYSICAL-ANNUAL-BOND-QUANTO-USD',
     'EUR-EURIBOR-1Y-SWAPTION-PHYSICAL-ANNUAL-BOND-QUANTO-GBP'):'EURIBOR_EUR_1Y'
}

print(temp3.get(('EUR-EURIBOR-1Y-SWAPTION-PHYSICAL-ANNUAL-BOND-QUANTO-USD',
     'EUR-EURIBOR-1Y-SWAPTION-PHYSICAL-ANNUAL-BOND-QUANTO-GBP')))

输出

def key_search(needle, haystack):
    matches = []

    for key, value in haystack.items():
        if type(key) in [list, tuple, dict] and needle in key:
            matches.append(value)
        elif needle == key:
            matches.append(value)

    return matches

data = {
    (1, 2, 3): 'heyyy',
    (2, 1): 'heyyy there'
}

print(key_search(1, data))

['heyyy there', 'heyyy'] 是您要查找的密钥,而大海捞针是您的数据。

答案 3 :(得分:0)

这就是你要看的

print(temp3.get([i for i in temp3 if 'EUR-EURIBOR-1Y-SWAPTION-PHYSICAL-ANNUAL-BOND-QUANTO-USD' in i][0]))

输出:

EURIBOR_EUR_1Y