簡體   English   中英

在 python 中,如何創建和維護可由一對 IP 地址索引的 IP 地址列表?

[英]In python, how can I create & maintain a list of IP addresses indexable by a pair of IP addresses?

我正在尋找一種方法來維護和更新 IP 地址的列表,我可以將其編入索引(通過一對 IP 地址)以將新地址添加到列表中。

例如,假設我有一個任意索引 (10.0.0.1 & 11.0.0.1)。 對於那對索引,我想要一個其他 IP 地址的列表。 我需要能夠將 10.0.0.1 和 11.0.0.1 對添加到列表中,還需要使用類似“in”運算符的東西來查看我要添加的地址是否已經存在。

像這樣(索引在左邊,每個索引都是一個列表)

(10.0.0.1, 11.0.0.1) --> [1.1.1.1, 6.7.8.9, 120.2.10.7, ...]

(17.7.1.3, 119.4.3.1) --> [33.5.1.81, 14.76.1.28, 14.9.65.19, ...]。 . .

我現在真的不想費心創建數據庫,我只是想要一個快速的臨時解決方案。 一段時間后,我會將信息存儲到數據庫中。

想知道我是否可以嘗試 collections 的任何想法。

(請參閱我在下面發布的解決方案,感謝答案。)

只要鍵,即您要索引的一對地址是可散列的(例如,包含字符串的元組),字典就足夠了。

編輯:如果您還沒有經常使用字典,請注意它的元素在 Python 3.6 之前是無序的,而有序性只是從 3.7 開始的記錄功能。 如果你只需要與 Python 3.6 向上兼容,你可能依賴於插入的升序排列的元素。 否則,您可以改用標准庫中的collections.OrderedDict

這似乎像我希望的那樣工作。 感謝您的幫助,並很高興收到任何其他評論。

這是我剛剛嘗試過的(使用我原來問題中的任意地址):

>>> my_addr_dict = {}
>>> print(my_addr_dict)
{}
>>> print(type(my_addr_dict))
<class 'dict'>
>>>
>>> my_addr_dict[('10.0.0.1','11.0.0.1')]=['1.1.1.1']
>>> my_addr_dict[('10.0.0.1','11.0.0.1')].append('6.7.8.9')
>>> my_addr_dict[('10.0.0.1','11.0.0.1')].append('120.2.10.7')
>>>
>>> print(my_addr_dict)
{('10.0.0.1', '11.0.0.1'): ['1.1.1.1', '6.7.8.9', '120.2.10.7']}
>>>
>>> print(type(my_addr_dict['10.0.0.1','11.0.0.1']))
<class 'list'>
>>>
>>> my_addr_dict[('17.7.1.3','119.4.3.1')]=['33.5.1.81']
>>> my_addr_dict[('17.7.1.3','119.4.3.1')].append('14.76.1.28')
>>> my_addr_dict[('17.7.1.3','119.4.3.1')].append('14.9.65.19')
>>>
>>> print(my_addr_dict)
{('10.0.0.1', '11.0.0.1'): ['1.1.1.1', '6.7.8.9', '120.2.10.7'], ('17.7.1.3', '119.4.3.1'): ['33.5.1.81', '14.76.1.28', '14.9.65.19']}
>>>
>>> print(my_addr_dict[('10.0.0.1','11.0.0.1')])
['1.1.1.1', '6.7.8.9', '120.2.10.7']
>>> print(my_addr_dict[('17.7.1.3','119.4.3.1')])
['33.5.1.81', '14.76.1.28', '14.9.65.19']
>>>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM