2014-03-13 264 views
47

python中的花括號和方括號有什麼區別?Python中花括號和方括號有什麼區別?

A ={1,2} 
B =[1,2] 
當我在我的終端上打印 AB

,他們沒有什麼區別。這是真的嗎?

有時,我注意到一些代碼使用{}[]來初始化不同的變量。

E.g. A=[]B={}

那裏有什麼區別嗎?

回答

72

大括號創建dictionariessets。方括號創建lists

它們被稱爲文字;一組文字:

aset = {'foo', 'bar'} 

或字典文字:

adict = {'foo': 42, 'bar': 81} 
empty_dict = {} 

或列表文字:

alist = ['foo', 'bar', 'bar'] 
empty_list = [] 

要創建一個空集,則只能使用set()

集合是唯一元素的集合,您無法對它們進行排序。列表是有序的元素序列,值可以重複。字典將鍵映射到值,鍵必須是唯一的。 Set和字典鍵也必須滿足其他限制,以便Python可以有效地跟蹤它們並知道它們是否將保持唯一。

也有tuple type,使用逗號1種以上的元素,與括號是在許多情況下可選的:

atuple = ('foo', 'bar') 
another_tuple = 'spam', 
empty_tuple =() 
WARNING_not_a_tuple = ('eggs') 

注意在another_tuple定義逗號;這是逗號使其成爲tuple,而不是括號。 WARNING_not_a_tuple不是一個元組,它沒有逗號。如果沒有括號,你只剩下一個字符串。

查看Python教程的data structures chapter瞭解更多細節;列表在introduction chapter中引入。

這些容器的文字也稱爲displays,並且該語法允許基於循環的程序創建內容,稱爲理解

9

他們創建不同的類型。

>>> type({}) 
<type 'dict'> 
>>> type([]) 
<type 'list'> 
>>> type({1, 2}) 
<type 'set'> 
>>> type({1: 2}) 
<type 'dict'> 
>>> type([1, 2]) 
<type 'list'> 
+0

我很好奇,當我同時使用{1,2}和[1,2]進行排序時,這兩者之間是否有更好的? –

+1

集合是無序的,將刪除重複的值。除此之外,傳遞給排序功能的可能性不大。您可以使用.sort()對列表進行排序 – Daenyth

0

這兩個大括號用於不同的目的。如果你只是想要一個列表來包含一些元素並按索引號(從0開始)來組織它們,那麼只需使用[]並根據需要添加元素。{}是特別的,你可以給自定義ID的值如a = {"John": 14}。現在,您可以通過a["John"]訪問John的年齡,而不是用年齡列出年齡並記住年齡在哪裏。

[]被稱爲列表,{}被稱爲字典(在Python中)。字典基本上是一種便利的列表形式,可讓您以更簡單的方式訪問數據。

但是,字典有一個問題。很多時候,您在字典中輸入的數據不會與以前保持相同的順序。因此,當你逐個查看每個值時,它將不會按照你期望的順序。有一個特殊字典來解決這個問題,但你必須添加這一行from collections import OrderedDict並用OrderedDict()替換{}。但是,我認爲你現在不需要擔心這一點。

相關問題