On 2014-01-26 10:47, 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:] ^ First, I don't think that this is doing what you want it to. I suspect you want something like
data = {} while True: z = raw_input("Enter Host, Mac, IP and Time") try: host, mac, ip, time = z.split() except ValueError: print("Could not parse. Quitting") break existing = get_existing(data, mac, ip) if existing: print("%s/%s already exists as %s" % ( mac, ip, existing) else: data[host] = [mac, ip, time] > 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. You have two main choices, depending on the size of the data and how frequently you're running the queries: 1) you can search through the entire dataset every time for any sort of match. If the list is reasonably small or you're not throwing thousands of queries-per-second at it, this is insignificant and can be pretty straight-forward: def get_existing(data, mac, ip): for hostname, (m, i, _) in data.items(): if mac == m or ip = i: return hostname return None 2) You can maintain separate data structures for the reverse-mapping. This has a much faster lookup time at the cost of more space and maintaining the reverse mappings. The whole thing might look more like ip_to_hostname = {} mac_to_hostname = {} data = {} while True: z = raw_input("Enter Host, MAC, IP and Time") try: host, mac, ip, time = z.split()[:4] except ValueError: print("Could not parse. Quitting") break if mac in mac_to_hostname: print("MAC already exists as %s" % mac_to_hostname[mac]) elif ip in ip_to_hostname: print("IP already exists as %s" % ip_to_hostname[ip]) # elif host in data: # mac2, ip2, _ = data[host] # if (mac, ip) != (mac2, ip2): # print("Hostname already entered (%s/%s)" % (mac2, ip2)) else: data[host] = [mac, ip, time] ip_to_hostname[ip] = host mac_to_hostname[mac] = host -tkc -- https://mail.python.org/mailman/listinfo/python-list