簡體   English   中英

比較具有不同鍵和結構的不同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':dict1dict3也有不同的鍵/值括在方括號中。 還要注意dict1鍵/值布局的不同之dict1number鍵在url之前而不是在dict2dict3 ,以及每個字典中的鍵名不同。

我有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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM