我习惯使用Matlab及其强大的冒号操作符。 似乎Python中有相同的东西,但是当它包含dict时却不完全相同。 这是我的例子:
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
我是否应该断定:
只能在不包含dict的列表中使用,或者我输错了?
谢谢,
答案 0 :(得分:3)
我是否应该断定
:
只能在不包含dict的列表中使用,或者我输错了?
这不是一个正确的结论。 data[0:2]
可以与任何列表一起使用。
问题是'key2'
是一个列表。
如果您想获得data[0:2]
中元素的>>> [v['key2'] for v in data[0:2]]
... ['value2', 'value4']
值列表,那么您需要将其写为列表推导:
>>> from operator import itemgetter
>>> map(itemgetter('key2'), data[0:2])
... ['value2', 'value4']
如果您更喜欢使用运算符而不是列表推导,则可以使用以下命令:
dim