0
我习惯使用Matlab及其强大的冒号操作符。 似乎在Python中有等价物,但它包含字典时并不完全。 这是我的例子:冒号:运算符在列表中
data = [
{'key1' : 'value1', 'key2' : 'value2'},
{'key1' : 'value3', 'key2' : 'value4'},
{'key1' : 'value1', 'key2' : 'value5'}
]
data[0:2]
作品,并返回[{'key1': 'value1', 'key2': 'value2'}, {'key1': 'value3', 'key2': 'value4'}]
(但是我会本能地使用0:1
有此相同的结果)
但
data[0:2]['key2']
不和返回list indices must be integers, not str
我应该得出结论::
只能用于不包含字典的列表,或者我打字它错了吗?
感谢,
你真的应该学习如何使用范围说明符。这对Python来说非常重要,您应该在使用Python的第一个小时内了解它。对于列表'x',指定'x [a:b]'返回一个'x'的片段,其第一个索引是'a',最后一个索引是'b-1'(含)。但它仍然是一个列表。在你的情况下,该列表包含两个字母。如果你想访问一个dict元素,你必须首先从列表中选择一个元素(或者从片断中)。例如。 'data [0:2] [1] ['key2']',或'data [1] ['key2']' –
您是否混淆了':'的两种不同用法?当指定一个字典与它在切片'[0:2]'中的使用没有任何关系时,它就可以使用。任何*序列*都可以被分割,包括列表,元组和字符串,而不管元素引用的对象的类。 – cdarke