刚开始使用python,尝试将dict嵌套在其他数据结构,列表,集合等中。当我嵌套dict时(如果我创建了一个dicts列表),我似乎无法引用键或个人内部的价值观再次出现。这是一个设计特征还是我完全剔透它?
答案 0 :(得分:4)
你绝对可以用Python做到这一点。您可以多次使用[]
运算符 - 如果a
是列表,则a[0]
是其第一个元素。如果第一个元素碰巧是dict,那么你可以看到a[0].keys()
的键,你可以像这样得到它的值:a[0]["here's a key"]
就像你会像这样循环字典的键:
for key in my_dict:
# get the value
val = my_dict[key]
# do something with it
如果恰好是dict:
,您可以使用列表中的元素for key in a[0]:
# get the value
val = a[0][key]
# do something with it
您可以很容易地列出列表,词典列表,甚至是值列表(或更多词汇)的词典。要引用它们,您可以迭代它们的值,或根据需要链接[]
操作。
关于您唯一不能做的事情是将列表或词组用作键到另一个词典。 规则之一是字典键必须是不可变。数字没问题,字符串正常,元组没问题,但是列表和字母不是。
以下是交互式代码示例,向您展示如何构建dicts列表,并再次提取其值:
# Here's a dictionary
a = { 'key1': 'value1', 'key2': 2 }
# Check it out
>>> type(a)
<type 'dict'>
# Print it:
>>> a
{'key1': 'value1', 'key2': 2}
# Look inside
>>> a['key1']
'value1'
# Here's another one
b = { 'abc': 123, 'def': 456 }
# Now let's make a list of them
c = [a, b]
# Check that out, too
>>> type(c)
<type 'list'>
# Print it:
>>> c
[{'key1': 'value1', 'key2': 2}, {'def': 456, 'abc': 123}]
>>> c[0]
{'key1': 'value1', 'key2': 2}
# Dig deeper
>>> c[0]['key1']
'value1'
答案 1 :(得分:2)
当您嵌套dicts(或嵌套任何内容)时,您必须在外部列表中提供所需dict的索引,然后提供所需项目的索引。所以,如果你在列表中有几个词:
list_of_dicts = [{'a':1,'b':2,'c':3},{'d':4,'e':5,'f':6}]
访问元素&#39; e&#39;在第二个词典中,你输入:list_of_dicts[1]['e']
答案 2 :(得分:1)
触及一些事情:
将dict添加到列表中。
mylist = []
mylist.append({'key1': 'val1'})
将列表添加到集合中。
myset = set()
myset.add({'key1': 'val1'}) # Error - dicts are mutable, therefore not hashable.
跟踪不同的词典。
mydicts = set([id(d) for d in mylist])
检索元素。
# With Lists
mylist[0]['key1']
# With Sets
mydicts[0] # Error - sets do not support indexing.
答案 3 :(得分:0)
x = [{"a":1},{"b":2}]
>>> x[1]["b"]
2