Я использую кортежи в качестве ключа для словаря, который я создал. Например:Как игнорировать порядок элементов в кортеже
example_dict = {}
example_dict[("A", "B")] = "1"
Позже, когда я хочу, чтобы изменить значение записи в словаре я в настоящее время не имеют контроля над порядком кортежа. Например:
("B", "A") may be the case, instead of ("A", "B")
Я знаю, что эти кортежи не равны от простого сравнения ==, что я попробовал в оболочке Python.
Что мне интересно, как я могу обойти это? Как я мог сделать не после получения исключения KeyError:
print (example_dict["B", "A"])
Есть ли способ, чтобы последовательно упорядочить элементы кортежа? Есть ли способ полностью игнорировать порядок? Любая другая работа вокруг? Я знаю, что я мог бы просто включить все аранжировки кортежей в качестве ключей в словаре, а затем сопоставить значения разных перестановок позже. Я очень хочу избежать этого, поскольку это только добавляет сложности и сложности в проблему.
Наборы также не имеют понятия множественности элементов. Это не имеет значения, когда ваши кортежи имеют длину 2, но это может быть беспорядочно разбито, когда у вас есть три элемента, и вы не можете отличить '(" A "," A "," B ")' from '(" A " , "B", "B") ', или если ваши кортежи могут иметь разную длину, и вы не можете различать' ("A",) 'from' ("A", "A") '. Он также ломается, если вы попытаетесь сделать что-то вроде 'for a, b в example_dict'. – user2357112
Любые комментарии об эффективности этого? Кажется, что 'frozenset' намного больше, чем 'tuple', с точки зрения объема памяти. – sudo