考虑这样的字典:
dic={ 'PC2': ['02:02:02:02:02:02', '192.168.0.2', '200'],
'PC3': ['03:03:03:03:03:03', '192.168.0.3', '200'],
'PC1': ['01:01:01:01:01:01', '192.168.0.1', '200'] }
如何在列表中搜索特定值?首先,我希望用户输入主机名和IP。例如'PC1'
和192.168.0.1
,然后我需要找出192.168.0.1
是否已经分配给字典中的其他主机。在这种情况下,我需要跳过在分配给用户输入主机的列表中搜索。
换句话说,如果用户输入'PC1'
和192.168.0.1
,我想跳过搜索'PC1'
的值。所以它应该只检测不同主机的匹配,跳过'PC1'
。
如果我输入'PC4'
和192.168.0.1
,则应检测到与PC1的冲突。因此PC4不会被插入,或者如果已经存在则会被删除。
我目前的解决方案:
z=raw_input("Enter Host, Mac, ip and time")
t=z.split()
t[0]=z[1:]
for key in dic:
if t[2] in dic[key]:
del dic[t[0]]
else:
dic[t[0]] = t[1:]
答案 0 :(得分:0)
我认为你想要的是ip->host
字典,
所以ip和amp;主持人,您可以轻松检查是否已经使用过它们。
ip2host = {dic[key][1]:key for key in dic.keys()}
(您已经可以将dic
用于host->ip
字典)
然后你可以做类似的事情:
host,mac,ip = raw_input("Enter Host, Mac, ip and time").split()
ip2host = {dic[key][1]:key for key in dic.keys()}
if host in dic.keys()
# <Override in db or whatever you want to do here>
dic[host][0] = mac
dic[host][1] = ip
else:
# <add to DB code here>
if ip in ip2host.keys():
# <deleted just added host>
请注意,您需要使用数据库访问代码替换我的注释。
此外,我不确定我是否了解您的所有需求,但也许您可以保留ips
而不是ip2host
字典的列表。
你可以创建这样的列表:
ips = [dic[k][1] for k in dic.keys()]