2011-07-05 39 views
8

当使用Python时,dict可能有一个值是一个列表?Python - 可以字典有一个值是一个列表?

例如,一本字典,将如下所示(请参阅KeyName3的值):

{ 
keyName1 : value1, 
keyName2: value2, 
keyName3: {val1, val2, val3} 
} 

我已经知道我可以用“defaultdict”但是单一值(可以理解)返回一个列表。

我问的原因是我的代码必须是通用的,以便调用者可以将单个键值作为一个项目进行检索(就像来自字典键值一样)而不是列表(不必指定pop[0]列表) - 但是也可以检索多个值作为列表。

如果不是那么任何suugestions将受到欢迎。

如果有人可以帮忙,那就太好了。

由于事先

保罗

*我使用Python 2.6然而编写脚本,还必须与Python 3.0+向前兼容。

+0

在这里阅读详细信息:http://docs.python.org/tutorial/datastructures.html#dictionaries并注意如果你是新来的蟒蛇 - 教程是你最好的朋友 –

+2

为了测试这样简单的事情,只需使用python的交互模式。你可以尝试并找出什么是允许的,哪些不是。 – tkerwin

+0

@Paul Kernaghan:当你尝试它时,你观察到了什么? –

回答

24

是的。字典中的值可以是任何类型的python对象。键可以是任何可哈希对象(不允许列表,但允许元组)。

您需要使用[],不{}创建一个列表:

{ keyName1 : value1, keyName2: value2, keyName3: [val1, val2, val3] } 
+0

Doh!这是完美的。感谢您的帮助,非常感谢。 –

+0

可以使用元组而不是列表的原因是因为列表是可变的,所以基于它们的“值”的计算不会是幂等的(计算意义上的)。 – Marcin

+0

@geoffspear,酷,但如何通过keyname3和列表值2获得价值? – Eswemenasja

5

是的,这是可能的:

d = {} 
d["list key"] = [1,2,3] 
print d 

输出:

{'list key': [1, 2, 3]} 
0

它绝对可以有列表和任何对象作为值,但字典不能有列表作为键因为列表是可变的数据结构,并且键不能被其他变量使用。

相关问题