python - how to group new dictionaries by using common strings from my dictionary -


refer previous question: how extract common words before particular symbol , find particular word

mydict = {"g18_84pp_2a_mvp1_goodiest0-hkj-dfg_mix-cmvp1_y1000-mix.txt" : 0,           "g18_84pp_2a_mvp2_goodiest0-hkj-dfg_mix-cmvp2_y1000-mix.txt" : 1,           "g18_84pp_2a_mvp3_goodiest0-hkj-dfg_mix-cmvp3_y1000-mix.txt" : 2,           "g18_84pp_2a_mvp4_goodiest0-hkj-dfg_mix-cmvp4_y1000-mix.txt" : 3,           "g18_84pp_2a_mvp5_goodiest0-hkj-dfg_mix-cmvp5_y1000-mix.txt" : 4,           "g18_84pp_2a_mvp6_goodiest0-hkj-dfg_mix-cmvp6_y1000-mix.txt" : 5,           "h18_84pp_3a_mvp1_goodiest1-hkj-dfg-cmvp1_y1000-fix.txt" : 6,           "g18_84pp_2a_mvp7_goodiest0-hkj-dfg_mix-cmvp7_y1000-mix.txt" : 7,           "h18_84pp_3a_mvp2_goodiest1-hkj-dfg-cmvp2_y1000-fix.txt" : 8,           "h18_84pp_3a_mvp3_goodiest1-hkj-dfg-cmvp3_y1000-fix.txt" : 9,           "p18_84pp_2b_mvp1_goodiest2-hkj-dfg-cmvp3_y1000-fix.txt" : 10} 

and got outputnamedict,

outputnamedict = {'h18_84pp_3a_mvp_fix': 1, 'p18_84pp_2b_mvp_fix': 2, 'g18_84pp_2a_mvp_mix': 0} 

now want group 3 new dictionaries using common strings casenamestring(refer previous question) , values outputnamedict.

the idea result like:

group1. mydict0 using value 0 in outputnamedict , string g18_84pp_2a_mvp_goodiest0 incasenamestring.

mydict0 = {"g18_84pp_2a_mvp1_goodiest0-hkj-dfg_mix-cmvp1_y1000-mix.txt" : 0,                           "g18_84pp_2a_mvp2_goodiest0-hkj-dfg_mix-cmvp2_y1000-mix.txt" : 1,            "g18_84pp_2a_mvp3_goodiest0-hkj-dfg_mix-cmvp3_y1000-mix.txt" : 2,            "g18_84pp_2a_mvp4_goodiest0-hkj-dfg_mix-cmvp4_y1000-mix.txt" : 3,            "g18_84pp_2a_mvp5_goodiest0-hkj-dfg_mix-cmvp5_y1000-mix.txt" : 4,            "g18_84pp_2a_mvp6_goodiest0-hkj-dfg_mix-cmvp6_y1000-mix.txt" : 5,            "g18_84pp_2a_mvp7_goodiest0-hkj-dfg_mix-cmvp7_y1000-mix.txt" : 6} 

group2. mydict1 using value 1 in outputnamedict , string h18_84pp_3a_mvp_goodiest1 incasenamestring.

mydict1 ={"h18_84pp_3a_mvp1_goodiest1-hkj-dfg-cmvp1_y1000-fix.txt" : 0,           "h18_84pp_3a_mvp2_goodiest1-hkj-dfg-cmvp2_y1000-fix.txt" : 1,           "h18_84pp_3a_mvp3_goodiest1-hkj-dfg-cmvp3_y1000-fix.txt" : 2} 

group3. mydict2 using value 2 in outputnamedict , string p18_84pp_2b_mvp_goodiest2 incasenamestring.

mydict2 ={"p18_84pp_2b_mvp1_goodiest2-hkj-dfg-cmvp3_y1000-fix.txt" : 0} 

any suggestion? there function call?

i'd change outputnamedict keys regular expression patterns, follows:

outputnamedict = {'h18_84pp_3a_mvp.*fix': 1, 'p18_84pp_2b_mvp.*fix': 2, 'g18_84pp_2a_mvp.*mix': 0} 

then, using re regular expression module, use match against keys in mydict, , place dictionary element appropriate key in output_dicts dictionary, follows

import collections import re output_dicts = collections.defaultdict(dict)  k, v in mydict.iteritems():     pattern, suffix in outputnamedict.iteritems():         if re.match(pattern,k):             output_dicts['mydict' + str(suffix)][k] = v             break     else:         output_dicts['not matched'][k] = v 

this results in output_dicts dictionary populated follows

for k, v in output_dicts.iteritems():     print k     print v     print 

which outputs

mydict1 {'h18_84pp_3a_mvp2_goodiest1-hkj-dfg-cmvp2_y1000-fix.txt': 8,   'h18_84pp_3a_mvp3_goodiest1-hkj-dfg-cmvp3_y1000-fix.txt': 9,   'h18_84pp_3a_mvp1_goodiest1-hkj-dfg-cmvp1_y1000-fix.txt': 6}  mydict0 {'g18_84pp_2a_mvp1_goodiest0-hkj-dfg_mix-cmvp1_y1000-mix.txt': 0,  'g18_84pp_2a_mvp2_goodiest0-hkj-dfg_mix-cmvp2_y1000-mix.txt': 1,   'g18_84pp_2a_mvp4_goodiest0-hkj-dfg_mix-cmvp4_y1000-mix.txt': 3,   'g18_84pp_2a_mvp5_goodiest0-hkj-dfg_mix-cmvp5_y1000-mix.txt': 4,   'g18_84pp_2a_mvp3_goodiest0-hkj-dfg_mix-cmvp3_y1000-mix.txt': 2,   'g18_84pp_2a_mvp6_goodiest0-hkj-dfg_mix-cmvp6_y1000-mix.txt': 5,   'g18_84pp_2a_mvp7_goodiest0-hkj-dfg_mix-cmvp7_y1000-mix.txt': 7}  mydict2 {'p18_84pp_2b_mvp1_goodiest2-hkj-dfg-cmvp3_y1000-fix.txt': 10} 

Comments

Popular posts from this blog

How to mention the localhost in android -

php - Calling a template part from a post -

c# - String.format() DateTime With Arabic culture -