Python - 字典可以有一个列表的值吗?
Posted
技术标签:
【中文标题】Python - 字典可以有一个列表的值吗?【英文标题】:Python - can a dict have a value that is a list? 【发布时间】:2011-09-29 02:31:33 【问题描述】:在使用 Python 时,dict 是否可以有一个列表值?
例如,如下所示的字典(参见 KeyName3 的值):
keyName1 : value1,
keyName2: value2,
keyName3: val1, val2, val3
我已经知道我可以使用 'defaultdict' 但是单个值(可以理解)作为列表返回。
我问的原因是我的代码必须是通用的,以便调用者可以将单个键值作为项目(就像从 dict 键值中一样)而不是列表(无需指定 pop[0]
列表) - 但是也可以将多个值作为列表检索。
如果没有,那么欢迎任何建议。
如果有人可以提供帮助,那就太好了。
提前致谢,
保罗
*我使用的是 Python 2.6,但编写的脚本也必须与 Python 3.0+ 前向兼容。
【问题讨论】:
阅读此处了解详细信息:docs.python.org/tutorial/datastructures.html#dictionaries 如果您是 python 新手,请注意 - 教程是您最好的朋友 为了测试这种简单的东西,只需要使用python的交互模式。您可以试验并找出允许的和不允许的。 @Paul Kernaghan:当你尝试它时,你观察到了什么? 【参考方案1】:是的。 dict 中的值可以是任何类型的 python 对象。键可以是任何可散列对象(不允许列表,但允许元组)。
创建列表需要使用[]
,而不是:
keyName1 : value1, keyName2: value2, keyName3: [val1, val2, val3]
【讨论】:
噢!这是完美的工作。感谢您的帮助,非常感谢。 可以使用元组但不能使用列表的原因是因为列表是可变的,因此任何基于其“值”的计算都不是幂等的(计算意义)。 @geoffspear,很酷,但是如何通过 keyname3 获取值并列出值 2? @Eswemenasja yourdict["keyname3"][2] 你如何解压keyName3
?这样val1
val2
val3
里面会有keyName3
吗?【参考方案2】:
是的,有可能:
d =
d["list key"] = [1,2,3]
print d
输出:
'list key': [1, 2, 3]
【讨论】:
【参考方案3】:它绝对可以有一个列表和任何对象作为值,但字典不能有一个列表作为键,因为列表是可变的数据结构,键不能是可变的,否则它们有什么用处。
【讨论】:
以上是关于Python - 字典可以有一个列表的值吗?的主要内容,如果未能解决你的问题,请参考以下文章