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
Post a Comment