Python: выявление повторяющихся значений в разных словарных ключах - PullRequest
3 голосов
/ 19 мая 2010

вот пример из диктата

ActivePython 3.1.2.3 (ActiveState Software Inc.) based on
Python 3.1.2 (r312:79147, Mar 22 2010, 12:20:29) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> dict = {}
>>> dict[("127.0.0.1", "127.0.0.2")] = ["value", "value2", "value3"]
>>> dict[("127.0.0.1", "127.0.0.3")] = ["value", "value2", "value3"]
>>> dict[("127.0.0.1", "127.0.0.4")] = ["value1", "value2", "value3"]

Кто-нибудь знает чистый и надежный способ вернуть список ключей словаря, значения которых идентичны независимо от типа значения?

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

1 Ответ

3 голосов
/ 19 мая 2010

Преобразовать список в кортеж.

На основании примера countMap в вашем сообщении, перед тем, как вы удалили его (если он все еще имеет отношение к вам):

countMap = {}
for k, v in dict.items():
    v = tuple(v)
    countMap[v] = countMap.get(v,0) + 1

Но, пожалуйста, не называйте ваши переменные dict, так как это имя типа Python.

Другое решение:

index = {}
for k, v in dict.items():
    v = tuple(v)
    index[v] = index.get(v, []) + [k]

Или очиститель с defaultdict:

from collections import defaultdict

index = defaultdict(list)
for k, v in dict.items():
    index[tuple(v)].append(k)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...