我写了这个,但我不明白为什么它不起作用。顺便说一下,我是编程的初学者。
fav_colours=[["bob"["likes:blue, hates:red"]],["john"["likes:red,hates:black"]],
["adam"["likes:purple,hates:pink"]]]
print fav_colours
我认为没有任何错误。谢谢。
答案 0 :(得分:4)
您需要通过逗号分隔每个列表项,因此["bob"["likes:blue, hates:red"]
应为["bob", ["likes:blue, hates:red"]
。
看起来您可能需要使用dict
而不是那些内部列表。 {"likes": "blue"}
。
答案 1 :(得分: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']
接下来要注意的是,您可能只对颜色字符串感兴趣,例如“blue”而没有“likes:”或“hates:”前缀。事实上,只有列表位置你已经拥有了这些信息,因为0索引“喜欢”,1索引“讨厌”。此外,由于没有其他位置有意义,最好使用()
将颜色列表更改为元组。
所以字典改为:
>>> fav_colours_dict = { "bob" : ("blue", "red"),
... "john" : ("red", "black"),
... "adam" : ("purple", "pink")}
现在设置
>>> likes, hates = range(2) # likes = 0, hates = 1
您可以通过以下方式访问adam中的“赞”颜色:
>>> 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最常用的数据结构:字典,元组和集合。