我有一個字典,其中的值是列表。我需要在刪除重複項後找到哪個鍵的值最長。如果我找到最長的列表,這將無法正常工作,因爲可能有很多重複項。我嘗試了幾件事,但沒有什麼是遠程接近正確的。以列表爲值的字典 - 找到最長列表
回答
d = # your dictionary of lists
max_key = max(d, key= lambda x: len(set(d[x])))
# here's the short version. I'll explain....
max(# the function that grabs the biggest value
d, # this is the dictionary, it iterates through and grabs each key...
key = # this overrides the default behavior of max
lambda x: # defines a lambda to handle new behavior for max
len(# the length of...
set(# the set containing (sets have no duplicates)
d[x] # the list defined by key `x`
)
)
)
由於通過字典鍵max
迭代的代碼(這是一本字典遍歷,靠了靠。for x in dict: print x
將打印在dict
每個鍵),它會返回它找到具有最高的關鍵結果應用key=
時我們構建的功能(這就是lambda
所做的)。你可以從字面上做任何事,這就是它的美。但是,如果你想要的鍵和值,你也許能夠做這樣的事....
d = # your dictionary
max_key, max_value = max(d.items(), key = lambda k,v: len(set(v)))
# THIS DOESN'T WORK, SEE MY NOTE AT BOTTOM
此不同,因爲強似d
,這是一本字典,我們通過d.items()
,這是從d
的鍵和值構建的元組列表。例如:
d = {"foo":"bar", "spam":['green','eggs','and','ham']}
print(d.items())
# [ ("foo", "bar"),
# ("spam", ["green","eggs","and","ham"])]
我們不再看字典了,但所有的數據仍然存在!它使處理使用我使用的解壓縮語句更容易:max_key, max_value =
。這和你的做法一樣,就是WIDTH, HEIGHT = 1024, 768
。 max
仍照常工作,它會迭代我們用d.items()
構建的新列表,並將這些值傳遞給它的key
函數(lambda k,v: len(set(v))
)。您還會注意到我們不需要執行len(set(d[k]))
,而是直接在v
上運行,這是因爲d.items()
已創建d[k]
值,並且使用lambda k,v
正在使用相同的解壓縮語句將密鑰分配給k
,並且值爲v
。
魔法!顯然不起作用的魔法。實際上,我並沒有在這裏深入挖掘,實際上,它們本身並不能解開價值。相反,請執行以下操作:
max_key, max_value = max(d.items(), key = lambda x: len(set(x[1])))
非常感謝!並且非常感謝解釋,我認爲我更接近真正理解它的工作原理。但是,我不明白的是爲什麼它只寫了鑰匙,而不是價值?我怎樣才能讓它寫兩個? (我並不真的需要這個,但我想也許這會讓我更好地理解它是如何工作的)。 – user2795095
@ user2795095編輯更多的信息和關鍵,值對:) –
哇,謝謝!我非常感謝,學到了很多:)再一次,謝謝:D – user2795095
- 1. 字典中的列表值的列表?
- 2. 找到最長的鏈接列表?
- 3. 找到[最大值,最小值在列表蟒列表值
- 4. 列表字典中的Python miminum長度/最大值
- 5. 如何將字典的字典轉換爲列表到字典列表?
- 6. 轉換字典的列表,以特定值的列表
- 7. 使用其他列表創建新列表以查找字典中的值 - python
- 8. 查找列表字典的多個最大值
- 9. 查找字典中列表的最大值 - python
- 10. 將列表作爲字典中的值
- 11. 將字典的值更改爲列表
- 12. 作爲字典中的值列表Python
- 13. 修改作爲字典值的列表
- 14. 將字典的值更改爲列表
- 15. 將字典的值轉換爲列表?
- 16. 鏈接到字典值的列表
- 17. 將字典的值添加到列表
- 18. 字典鍵值,以選擇列表
- 19. 將字典列表轉換爲唯一的字典列表
- 20. 字典列表的列表中的鍵值列表?
- 21. Python列表轉換爲列表字典
- 22. 將列表轉換爲字典列表
- 23. 最快的方法來做名字值對查找長列表
- 24. 列表理解在詞典列表中找到唯一鍵值
- 25. 將字典列表寫入csv,其中字典值是列表
- 26. 將字典列表轉換爲一個無序的值列表?
- 27. 列表的值是字典值的列表的訪問值
- 28. 從列表字典中找到最小的鍵子集
- 29. 查找列表中等效值的最長序列?
- 30. 如何找到最長的字符串表中的列數據
最好與您的問題分享您的努力。 – squiguy
我會在下次做。我的努力根本不正確,這就是爲什麼我認爲在這裏寫作沒有意義。 – user2795095
我不明白你爲什麼擔心重複。如果它們是相同的,它們具有相同的長度並且不會影響最大值。字典沒有排序,因此找到列表最長的「第一個」鍵可能會很棘手。 – jcfollower