开发者

find corresponding key,values and return?

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(开发者_如何学JAVAlist_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 ''


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?!-).


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)]
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜