2011-12-11 73 views
-1

我寫了這個,但我不明白爲什麼它不工作。順便說一句,我是編程初學者。列表中的一個列表中的蟒蛇

fav_colours=[["bob"["likes:blue, hates:red"]],["john"["likes:red,hates:black"]], 
["adam"["likes:purple,hates:pink"]]] 
print fav_colours 

我不認爲有任何錯誤。提前感謝。

+0

不夠','! –

+0

你缺少逗號 – yurib

回答

4

您需要通過逗號分隔每個列表項,因此["bob"["likes:blue, hates:red"]應該是["bob", ["likes:blue, hates:red"]

而且看起來您可能需要使用dict而不是那些內部列表。 {"likes": "blue"}

1

除了羅素·迪亞斯答案:

多個嵌套列表讓你的問題,例如如果你想

  • 訪問數據從一個特定的人。例如。如果你想要John的數據,你必須知道John的列表中有索引1。
  • 檢查一個人的存在 - >你將不得不迭代整個列表並進行比較。如果你想避免重複,同樣重要。

要處理這些點,您可以使用字典替換外部列表。而且我認爲類似與恨的部分應該是獨立的字符串:

>>> fav_colours_dict = { "bob" : ["likes:blue", "hates:red"], 
... "john" : ["likes:red", "hates:black"], 
... "adam" : ["likes:purple", "hates:pink"] } 

>>> print fav_colours_dict["john"] 
['likes:red', 'hates:black'] 



接下來的事情要注意的是,你是有可能在顏色字符串只是感興趣,像「藍色」無「喜歡:「或」恨:「前綴。事實上,只有列表位置你已經有了這些信息,因爲0表示「喜歡」,1表示「討厭」。此外,由於沒有進一步的位置有意義,所以最好將顏色列表更改爲元組,()

所以詞典更改爲:

>>> fav_colours_dict = { "bob" : ("blue", "red"), 
... "john" : ("red", "black"), 
... "adam" : ("purple", "pink")} 

現在用設置

>>> likes, hates = range(2) # likes = 0, hates = 1 

您可以訪問 「喜歡」 顏色從亞當:

>>> print fav_colours_dict["adam"][likes] 
purple 


在你想添加幾種顏色的情況對於喜歡或討厭最好的方法是使用一套,與{}。這將確保沒有顏色使用了兩次:

>>> fav_colours_dict = { "bob" : ({"blue", "yellow"}, {"red"}), 
>>> ... "john" : ({"red"}, {"black", "green"}), 
>>> ... "adam" : ({"purple", "black"}, {"pink"}) } 

>>> print fav_colours_dict 
{'bob': (set(['blue', 'yellow']), set(['red'])), 'john': (set(['red']), 
set(['black', 'green'])), 'adam': (set(['purple', 'black']), set(['pink']))} 

看到上面的輸出,你可能會想要更好的打印:

>>> for person, colours in fav_colours_dict.iteritems(): 
...  print person 
...  print "- likes: " + ", ".join(colours[likes]) 
...  print "- hates: " + ", ".join(colours[hates]) 
... 
bob 
- likes: blue, yellow 
- hates: red 
john 
- likes: red 
- hates: black, green 
adam 
- likes: purple, black 
- hates: pink 


所以最終你最常用的數據Python的結構:字典,元組和集合。