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 - 字典可以有一个列表的值吗?的主要内容,如果未能解决你的问题,请参考以下文章

python字典和列表区别都有哪些

可以使用 std::unique 来确定自定义类的对象是不是具有相同的值吗?

我可以使用列表作为自定义模板属性的值吗?

如何展平Python字典中键的值(元组列表列表)?

更改列表中每个字典的特定键的值 - python

替换 Python 列表/字典中的值?