Как получить доступ / утвердить значения ключей кортежа в словаре Python - PullRequest
0 голосов
/ 25 ноября 2018

Как я могу вернуть "True" или "False", если 2 строки подряд находятся в словарном ключе, который является кортежем / тройкой?

 d = {(1, 'a', 'b') : 2, (4, 'c', 'd'):5}

Мне нужно выражение вроде:

return 'a', 'b' in d.keys()

Ответы [ 3 ]

0 голосов
/ 25 ноября 2018

Вы можете связать элементы для каждого ключа в словаре и затем проверить, равна ли какая-либо из этих пар вашему желаемому результату, например:

d = {(1, 'a', 'b') : 2, (4, 'c', 'd'):5}

# Check for existence of any key matching criteria
any(pair == ('a', 'b') for key in d for pair in zip(key, key[1:]))
# True

# Filter out keys/values matching criteria
{k: v for k, v in d.items() if any(p == ('a', 'b') for p in zip(k, k[1:]))}
# {(1, 'a', 'b'): 2}
0 голосов
/ 25 ноября 2018

это, кажется, работает нормально

for key in d:
        return key[1] == string_1 and key[2] == string_2
0 голосов
/ 25 ноября 2018

Вы можете сделать это с помощью вложенных циклов:

def myFunc(myDict):
    myKeys = list(myDict.keys())
    for myList in myKeys:
        myPreviousElement = None
        for myElement in myList:
            if myElement == myPreviousElement:
                return True
            myPreviousElement = myElement
    return False

d = {(1, 'a', 'a') : 2, (4, 'c', 'd'):5}
print(myFunc(d)) # True

d = {(1, 'a', 'b') : 2, (4, 'c', 'd'):5}
print(myFunc(d)) # False

Затем вы можете настроить возвращаемые значения так, как вам нравится

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...