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