On 12월10일, 오후12시18분, Adonis Vargas <[EMAIL PROTECTED]> wrote: > Seongsu Lee wrote: > > Hi, > > > I have a dictionary with million keys. Each value in the > > dictionary has a list with up to thousand integers. > > Follow is a simple example with 5 keys. > > > dict = {1: [1, 2, 3, 4, 5], > > 2: [10, 11, 12], > > 900000: [100, 101, 102, 103, 104, 105], > > 900001: [20, 21, 22], > > 999999: [15, 16, 17, 18, 19]} > > > I want to find out the key value which has a specific > > integer in the list of its value. For example, if I search > > 104 in the list, 900000 must be returned. > > > How can I do this with Python? Ideas? > > You can try this: > > items = {1: [1, 2, 3, 4, 5], > 2: [10, 11, 12], > 900000: [100, 101, 102, 103, 104, 105], > 900001: [20, 21, 22], > 999999: [15, 16, 17, 18, 19]} > > def findItem(item, dictionary): > for key, value in dictionary.iteritems(): > if item in value: > print key, value > > findItem(104, items) > > This will allow you to work with the existing dataset without needing to > duplicate it. It will print all occurrances.
Hi, Yes, it works. But I think it works in O(n * m), doesn't it? (n is # of keys in the dictionary and m is # of items in the list.) So, we need to create a reverse index. (a reverse dictionary) or need something better at least, I think. > Also, you should never use reserved words like 'dict' this creates > confusion and can cause Python to misbehave since you are rebinding the > name. Yep. :) > Hope this helps. > > Adonis Vargas- 따온 텍스트 숨기기 - > > - 따온 텍스트 보기 - -- http://mail.python.org/mailman/listinfo/python-list