dictionary - Comparing values of different python dictionaries with different keys & structures -
this more of theoretical question anything. have 3 dictionaries have different structure/keys values may same. e.g.
dict1 = {u'd':{u'results':[{u'number':'1', u'dispurl':u'www.site.com'}, {u'number':u'2', u'dispurl':u'www.othersite.com'}] }} dict2 = {u'result_page':{u'url':u'www.greatsite.com', u'pos':u'1'}, {u'url':u'www.site.com', u'pos':u'2'}} dict3 = {u'hits':[{u'displayurl':u'www.othersite.com', u'index':u'1'}, {u'displayurl':u'www.site.com', u'index':u'2'}] }
note how dict1
has {u'd':
before {u'results':
, dict1
, dict3
have different key/values enclosed in square parentheses. note how keys/values layout different in dict1
number
key coming before url
instead of after in dict2
, dict3
, key names being different in each dictionary.
i have 3 large dictionaries , need compare them position of each url scoring purposes. i.e.
if dict1[www.site.com index] > dict2[www.site.com index]: dict1[www.site.com] score +1
i know code snippet isn't correct it's illustration. want know need dictionaries able perform comparison this? thinking of taking required data each dictionary , putting them 3 new dictionaries uniform keys , structure, or 1 new dictionary. program has computationally quite fast don't know how affect it. of more experienced python programmers want have on this?
the effective way approach convert data canonical {url:value} format.
for example:
dict1 = {data[u'dispurl']:int(data[u'number']) data in dict1[u'd'][u'results']} dict2 = {data[u'url']:int(data[u'pos']) data in dict2[u'result_page']} dict3 = {data[u'displayurl']:int(data[u'index']) data in dict3[u'hits']}
now like
dict1 = {u'www.othersite.com': 2, u'www.site.com': 1} dict2 = {u'www.greatsite.com': 1, u'www.site.com': 2} dict3 = {u'www.othersite.com': 1, u'www.site.com': 2}
and comparison looks like
for url in dict1: if dict1[url] > dict2[url]: #
Comments
Post a Comment