[英]comparing four dictionaries that their keys are same but each has different values in python
[英]Comparing values of different python dictionaries with different keys & structures
這更像是一個理論問題。 我有3個字典,它們具有不同的結構/鍵,但值可能相同。 例如
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'}]
}
注意dict1
如何{u'd':
在{u'd':
之前{u'results':
, dict1
和dict3
也有不同的鍵/值括在方括號中。 還要注意dict1
鍵/值布局的不同之dict1
是number
鍵在url
之前而不是在dict2
和dict3
,以及每個字典中的鍵名不同。
我有3個像這樣的大字典,我需要根據每個網址的位置來比較它們以進行評分。 即
if dict1[www.site.com index] > dict2[www.site.com index]:
dict1[www.site.com] score +1
我知道代碼片段不正確它只是為了說明。 我想知道的是我需要對字典做些什么才能進行這樣的比較? 我正在考慮從每個字典中獲取所需的數據,並將它們放入3個具有統一鍵和結構的新詞典中,甚至是1個新詞典。 但我的程序必須在計算上非常快,所以我不知道這將如何影響它。 你們中任何有經驗的python程序員都希望對此有發言權嗎?
解決此問題的最有效方法是將您的數據轉換為規范{url:value}格式。
例如:
dict1 = {data[u'dispURL']:int(data[u'number']) for data in dict1[u'd'][u'results']}
dict2 = {data[u'url']:int(data[u'pos']) for data in dict2[u'result_page']}
dict3 = {data[u'displayurl']:int(data[u'index']) for data in dict3[u'hits']}
現在他們看起來像
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}
你的比較看起來像
for url in dict1:
if dict1[url] > dict2[url]:
# do something
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.