2014-09-04 37 views
-1

我有一個IP地址作爲密鑰和MAC地址作爲值的字典。一個條目可能如下所示:如何查找在python dictonary中具有重複值的鍵?

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

通過讀取arp表的輸出來填充此字典。我在尋找的是具有多個MAC地址(值)的IP地址(密鑰)。每次我發現一個具有多個值的IP時,我想輸出一個錯誤,顯示ip地址和發現的mac地址列表。

有沒有簡單的方法來做到這一點?

感謝您的幫助。

---------------------------澄清------------------ ------------------------

對不起,昨晚是晚了,並沒有正確思考.....

我有一個帶有IP地址的mac字典。沒有重複的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

所以將字典看起來像在那裏有多個值的關鍵是什麼? – 2014-09-04 03:18:54

+0

字典鍵是唯一的。你所描述的是不可能的。 – 2014-09-04 03:19:24

+0

我的想法完全是大聲笑..除非值是一個MAC地址列表 – 2014-09-04 03:19:44

回答

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])) 
0

檢查:

ip_dict[ip]=[mac1,mac2]