tags:

views:

64

answers:

2
I have a dictionary 

cities  = {1:'Kompong Som', 2: 'Kompong Thom', 3: 'Phnom Penh'}
tags = {1: 'school', 2: 'public', 3: 'private'}

kwargs = {'city': '2', 'tag': '3'}#should be improve

I want to get output like this :

kwargs = {'city': 'Kompong Thom', 'tag': 'private'}

EDIT passed from URL

 keyword = customer_type=&last_contact=&tag=2,3&city=3&sale_volume=&acc_creation=&last_sale=&key_comm=

in this case

tag=2,3&city=3 maybe in other case tag=2&city=1,2,3 or tag=1,2,3&city=1,2,3

def present_filter(self, list_result, keyword):
    #@todo: the present filter should be friendly with user .
       if len(list_result) > 0:
           keywords = eval(json.dumps(keyword))

           new_keywords = {}
           for key,value in keywords.items():
                if value != '' :
                    new_keywords[key] = value
           return new_keywords
          # Now new_keywords is {'city': '3', 'tag': '2,3'}
          # I WANT TO BE LIKE THIS
          #new_keywords is {'city': 'Phnom Penh', 'tag': 'public,private'}
       else:
           return ''
+2  A: 
def translate(cities, tags, kwargs):
  return {'city': cities[int(kwargs['city'])],
          'tag': tags[int(kwargs['tag'])]}

There's no clear way (from your question) to automate the keyname-to-auxiliary dictionary choice, so I've just hardcoded the keys and aux dict to use for each; if that's not what you want, please edit your question to clarify what it is that you want!-)

Edit: so given this new and different spec from the OP:

      # Now new_keywords is {'city': '3', 'tag': '2,3'}
      # I WANT TO BE LIKE THIS
      #new_keywords is {'city': 'Phnom Penh', 'tag': 'public,private'}

the solution becomes:

def commaplay(adict, value):
  return ','.join(adict[int(x)] for x in value.split(','))

def translate(cities, tags, kwargs):
  return {'city': commaplay(cities, kwargs['city']),
          'tag': commaplay(tags, kwargs['tag'])}

Of course, if the OP completely changes their specs again, the solution will change once more in response (wouldn't it be just incredibly great if people said what they meant, and meant what they said, instead of whirling things around all the time?!-).

Alex Martelli
Thanks ,and sorry for my garble question.Now I edited again.
python
@Alex Martelli ,thank for your help and comments.it's what I want .
python
@Alex Martelli I read about at http://www.oreillynet.com/pub/au/918You are super ! :)
python
+1  A: 

You could put cities and tags in a helper dictionary to make it more easy to select the correct values using the kwargs keys:

choices = {
   'city': cities,
   'tag':  tags
}

result = {}
for k, v in kwargs:
   result[k] = choices[k][int(v)]
sth