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

2024-09-27 21:33:04 发布

您现在位置:Python中文网/ 问答频道 /正文

在尝试运行以下代码时:

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

Tags: 代码nonegeteurusdprintgbpphysical
3条回答

您没有使用字典的完整键。你知道吗

尝试使用完整键

(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'

您希望get函数将key值解压并在元组内搜索;它不是这样工作的。你知道吗

正确的方法是使用用来创建dictkey。你知道吗

示例:

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']

其中needle是您要寻找的关键,而干草堆是您的数据。你知道吗

实际上正确的键是('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

相关问题 更多 >

    热门问题