給定的字典,d1和d2,創建一個新的字典具有以下屬性:對於d1中的每個條目(a,b),如果有條目(b,c)在d2中,則應將條目(a,c)添加到新字典中。 如何看待解決方案?我是一個python初學者,字典是新的
回答
def transitive_dict_join(d1, d2):
result = dict()
for a, b in d1.iteritems():
if b in d2:
result[a] = d2[b]
return result
當然,您可以更簡潔地表達這一點,但我認爲,對於初學者來說,拼寫出來的內容更清晰,更具啓發性。
我同意亞歷克斯在作爲新手拼寫事情的需要,並在稍後轉向更簡潔/抽象/危險的構造。
爲了記錄,我在這裏列出了一個列表理解版本,因爲Paul's似乎並不工作。
>>> d1 = {'a':'alpha', 'b':'bravo', 'c':'charlie', 'd':'delta'}
>>> d2 = {'alpha':'male', 'delta':'faucet', 'echo':'in the valley'}
>>> d3 = dict([(x, d2[d1[x]]) for x in d1**.keys() **if d2.has_key(d1[x])]) #.keys() is optional, cf notes
>>> d3
{'a': 'male', 'd': 'faucet'}
簡而言之,用 「d3 =
」 的路線表示如下:
d3 is a new dict object made from all the pairs made of x, the key of d1 and d2[d1[x]] (above are respectively the "a"s and the "c"s in the problem) where x is taken from all the keys of d1 (the "a"s in the problem) if d2 has indeed a key equal to d1[x] (above condition avoids the key errors when getting d2[d1[x]])
是的,我沒有測試它。你的確做到了這一點。 – 2009-10-29 05:02:28
有沒有讓你使用.keys()的原因?它與下面的不同: 'd3 = dict([(x,d2 [d1 [x]])對於d1中的x,如果d1 [x]在d2])'? – 2009-10-29 10:42:47
@Andrea沒有什麼特別的理由,只是溫和地嘗試讓新手聽衆表達得更加明確(參見Alex'明智地接受這一點)。但是,你說得對'd1中的x代表'是枚舉d1的鍵的習慣方式。 – mjv 2009-10-29 12:34:38
#!/usr/local/bin/python3.1
b = { 'aaa' : '[email protected]',
'bbb' : '[email protected]',
'ccc' : '[email protected]'
}
a = {'a':'aaa', 'b':'bbb', 'c':'ccc'}
c = {}
for x in a.keys():
if a[x] in b:
c[x] = b[a[x]]
print(c)
輸出: { '一個': '[email protected]', 'c' 的:'[email protected]','b':'[email protected]'}
- 1. (Python初學者)從兩個字典中一起添加座標
- 2. python套接字初學者
- 3. 錯誤LNK1169,幫助!我是初學者
- 4. Linkedin API SignUp按鈕 - 我是一個初學者
- 5. Python初學者的cheatsheet?
- 6. 初學者的Python行使
- 7. Python中的初學者類
- 8. 初學者的Python框架
- 9. python的indexerror初學者
- 10. 到IDE還是不是?一個初學者開發者的困境
- 11. 我怎麼會檢查是否有在輸入一個字符串 - 初學者
- 12. 只是一些初學者的水平javascript我認爲很酷
- 13. Python列表初學者
- 14. Python編程初學者
- 15. python hangman代碼初學者
- 16. Python 3,初學者錯誤
- 17. Python初學者(列表)
- 18. Python編程 - 初學者
- 19. time.localtime()問題初學者python
- 20. 初學者主題Prestashop 1.7是空的
- 21. 作爲初學者,我應該學習Rails,Joomla還是DHTML?
- 22. 選擇哪一種 - Android 1.5或Android 2.2? (我是初學者)
- 23. 我的班級出了問題。我是初學者
- 24. 檢查並更正我的代碼。 (我是初學者)
- 25. C++初學者新術語?
- 26. Python初學者中最常出現的錯誤是什麼?
- 27. 調試C代碼是初學者
- 28. 初學者問題:什麼是綁定?
- 29. SSL一個絕對的初學者
- 30. Python:檢查一個變量是否是一個字典
如果這是一個家庭作業問題,請標記爲這樣。 – 2009-10-29 04:28:12
請不要發佈作業問題。只發布您的嘗試並詢問您不明白的具體問題。 – hasen 2009-10-29 07:52:34