2013-01-18 24 views
1

下面是示例字典一個在Python中創建時的擴展列表,如何?

one = {'a': 1,'b': 3} 

和第二字典是

second = {'x': 45,'y': 45} 

這裏是關鍵容器(list型)

key_con = one.keys() 
key_con = key_con.extend(second.keys()) 

和所有的工作好。 但我儘量縮短這樣

key_con = one.keys().extend(second.keys()) 

現在的代碼 ,key_conNoneType 我想使這個密鑰容器中的一行代碼。 如何實現它?

回答

5
key_con = one.keys() + second.keys() 

extend就地修改列表並且不返回任何內容。你確定你的第一個片段有效嗎?

+0

是的,我已經嘗試並測試了一個。 – lokeshjain2008

+0

@ lokeshjain2008 https://gist.github.com/4564328只是複製並粘貼上面給出的代碼。 –

+0

謝謝你,簡單的一個。對我感到羞恥。 – lokeshjain2008

1

雖然the other answer by Pavel Anossov回答了您明確提出的問題,但我仍然認爲這不是解決手頭問題的最佳解決方案。字典是無序的,並且不能有重複的密鑰,所以使用列表來存儲密鑰本質上具有誤導性和壞主意。

相反,將這些數據存儲在一個集合中是一個更好的主意 - 集合沒有順序,並且不能包含重複項,因此更有效地填充此角色。

在Python 3.x中,dict.keys()給人a set-like dictionary view,所以這將與被做得最好:

key_con = one.keys() | two.keys() 

我們使用|(二進制或)運算符,其中,在集合和設置狀物體,信號一個union(所有元素在一組其他)。

在2.7,可以與dict.viewkeys()能夠獲得相同的行爲:

key_con = one.viewkeys() | two.viewkeys() 

在舊版本,那麼我們就可以用dict.iterkeys()set()

key_con = set(one.iterkeys()) | set(two.iterkeys())