2014-09-04 5 views
-1

У меня есть словарь с IP-адресом в качестве ключа и MAC-адреса в качестве значения. Одна запись может выглядеть так:Как вы находите ключи, которые имеют повторяющиеся значения в дикторе python?

ip_dict['192.168.1.100'] = '33:22:11' 

Этот словарь заполнен чтением выходного файла таблицы arp. Я ищу IP-адрес (ключ), который имеет более одного MAC-адреса (значение). Каждый раз, когда я обнаруживаю ip с несколькими значениями, я хочу вывести ошибку, показывающую ip-адрес и список найденных адресов.

Есть ли простой способ сделать это?

Спасибо за помощь.

--------------------------- Уточнение ------------------- ------------------------

К сожалению, это было вчера поздно вечером и не думал правильно .....

У меня есть словарь для Mac с IP-адресом. Не существует дублированного адреса mac. Каждый Mac имеет один IP-адрес (поле значения). Вопрос в том, какие адреса mac имеют одинаковый адрес ip?

Пример:

mac_dict['11:22:33'] = '192.168.1.100' 
mac_dict['11:23:44'] = '192.168.1.101' 
mac_dict['11:23:43'] = '192.168.1.102' 
mac_dict['12:43:55'] = '192.168.1.101' 
mac_dict['54:22:65'] = '192.168.1.102' 
mac_dict['21:1A:01'] = '192.168.1.101' 

Я хотел бы способ создания дубликата списков ...

[('11':23:44', '12:43:55', '21:1A:01'), ('11:23:43', '54:22:65')] 

Первые три MAC-адреса всех есть 192.168.1.101 в качестве IP-адрес, и последние два имеют 192.168.1.102 в качестве своего ip-адреса. Поскольку «11: 22: 33» не дублируется, он вообще не отображается в списке.

Благодаря

+1

Так что же словарь выглядеть на ключ, где были несколько значений? –

+0

Словарь ключей уникален. То, что вы описали, невозможно. –

+0

Мои мысли точно lol .. если значения не являются списком адресов mac –

ответ

0
vals = set() 
for k in ip_dict: 
    v = ip_dict[k] 
    if v in vals: 
     print(k, 'is has a duplicate value') 
    vals.add(v) 
1
for key in ip_dict: 
    if len(ip_dict[key]) > 1: #assuming the values are a list of mac address.... 
     print("IP has multiple mac addresses: {}".format(ip_dict[key]))