初学Python问题

时间:2012-01-18 05:29:45

标签: python list dictionary

刚开始使用python,尝试将dict嵌套在其他数据结构,列表,集合等中。当我嵌套dict时(如果我创建了一个dicts列表),我似乎无法引用键或个人内部的价值观再次出现。这是一个设计特征还是我完全剔透它?

4 个答案:

答案 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)

触及一些事情:

  1. 将dict添加到列表中。

    mylist = []

    mylist.append({'key1': 'val1'})

  2. 将列表添加到集合中。

    myset = set()

    myset.add({'key1': 'val1'}) # Error - dicts are mutable, therefore not hashable.

  3. 跟踪不同的词典。

    mydicts = set([id(d) for d in mylist])

  4. 检索元素。

    # 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