mick verdu wrote:
> z={ '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'] }
>
> My solution:
>
> 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:]
>
>
> What I really want to achieve is:
>
>
> How to search for a particular value inside list. First, I want the user
> to input hostname and ip. e.g. PC1 and 192.168.0.1, then need to find out
> if 192.168.0.1 has already been assigned to some host in dictionary. In
> this case I would need to skip for search inside list of user input host.
>
> Forexample, if user inputs PC1 and 192.168.0.1 i would like to skip
> searching in above PC1's values. So it should detect matching only with
> different hosts and skip its own name.
>
> If i input PC4 and 192.168.0.1 then it should detect conflict with PC1. So
> PC4 would be deleted(As soon as user inputs new host it is saved in above
> database then if conflict with others deleted)
You are making the problem unnecessarily complex. For the example scenario
start with a dict that maps host to ip:
host2ip = {
"PC1": "192.168.0.1",
"PC2": "192.168.0.2",
"PC3": "192.168.0.3",
}
host, ip = raw_input("Enter host and ip: ").split()
if host not in host2ip:
print "adding", host
host2ip[host] = ip
else:
old_ip = host2ip[host]
if old_ip == ip:
print "no changes necessary"
else:
print "updating ip for", host, "from", old_ip, "to", ip
host2ip[host] = ip
Then proceed and come up with an unambiguous description of what to do with
mac and time in plain english, and add or modify data structures as
necessary.
--
https://mail.python.org/mailman/listinfo/python-list