一部のキャンパスワイヤレスモビリティスイッチの設定を生成するスクリプトがあります。ユーザーは設定用のIPアドレスのセットを提供する必要があります。リスト内のIPが別のサブネットに属しているかどうかを確認するためのPythonic方法
これらのIPはすべて同じ/ 24サブネット(常に/ 24)になければなりません。 IPが異なるサブネット(構成を壊してしまい、すでに起こっている)にあるタイプミスを避けるために、どのIPに障害があるのかをユーザーに伝えたいと思います。私は次のように書いていますが、もっと良い方法があると思います。
ips = ['10.0.0.1', '10.0.0.2', '10.0.10.3', '10.0.0.4', '10.0.0.5']
次の仕事を取得します:
subnets = set()
for ip in ips:
subnets.add('.'.join(ip.split('.')[0:3]))
# This would result in subnet being set(['10.0.10', '10.0.0'])
if len(subnets) > 1:
seen_subnets = defaultdict(list)
for sn in subnets:
for ip in ips:
if sn in ip:
seen_subnets[sn].append(ip)
suspect = ''
for sn in seen_subnets.keys():
if len(seen_subnets[sn]) == 1:
suspect = seen_subnets[sn][0]
if not suspect:
# Do something to tell the user one or more IP's are incorrect
# but I couldn't tell which ones
注:私が持っている可能性が最小のリストがあり
リストは第三IPが間違っているところ、この、あるとし3つの項目があります。私は、おそらくほとんどすべての間違いではなく、おそらく1つのIPに過ぎないと仮定してこれをベースにしています。
もっと簡単な方法がありますか?私は解決策がいずれかの方法でset
を使用することに基づいている必要があると思うが、それは私の方法のいずれかがこれよりも役立つと思われませんでした。
は、私はいくつかの行を混合しました。 – interloper