Проверка ключей внутри ключей в словаре - PullRequest
0 голосов
/ 24 октября 2018

Есть ли способ проверить внутренние ключи внутри словарных ключей и, если элемент имеет ключевой элемент внутри, вернуть соответствующее значение из словаря.

например, проверить, есть ли какой-либо элемент, который "Hello" находится во втором элементе ключевого кортежа и, если он существует, возвращает соответствующее значение.

d = {(1, "Hello"): "a", (2, "Bye"): "b"}
key = "Hello"
# Since "Hello" exist in d's key's element(second position), return "a"

Ответы [ 4 ]

0 голосов
/ 24 октября 2018

Использование следующего (который вернется, как только совпадение будет найдено).Установив для возврата по умолчанию значение «Нет», мы гарантируем, что не получим ошибку StopIteration, и теперь мы можем пойти дальше и использовать функцию словарей get.

Обратите внимание, что в большинстве случаев это будет быстрее, чем полный поиск.

key = 'Hello'
d.get(next((t for t in d if key in t), None))

Возвращает:

'a'
0 голосов
/ 24 октября 2018

Получить список всех ключевых наборов, содержащих ключ;возьмите первый элемент этого списка и используйте его как индекс для d.

>>> d = {(1, "Hello"): "a", (2, "Bye"): "b"}
>>> key = "Hello"
>>> d[[key_tuple for key_tuple in d if key in key_tuple][0]]
'a'
0 голосов
/ 24 октября 2018

Да;однако вам придется перебирать каждый ключ в вашем словаре, пока вы не найдете «внутренний ключ», который вы ищете.Код выглядит так:

d = {(1, "Hello"): "a", (2, "Bye"): "b"}
key = "Hello"

for k in d.keys():
    if key in k:
        print(d[k])

Вы можете проверить, существует ли элемент в кортеже с ключевым словом Python in.Это позволяет вам проверить, является ли ваш key «внутренним ключом» в любом месте внутри вашего ключа.

Этот код будет выводить a в качестве вывода.

0 голосов
/ 24 октября 2018

Вы можете выполнить итерации по кортежам ключей, проверить, соответствует ли второе значение кортежа тому, что вы хотите (например, «привет»), и если это так, вернуть значение для этого ключа.Как то так:

d = {(1, "Hello"): "a", (2, "Bye"): "b"}
key = "Hello"
for k in d:
    if k[1] == key:
        return d[k]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...