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)]
精彩评论