冒号:列表中的运算符

时间:2017-10-28 10:06:30

标签: python matlab list colon

我习惯使用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的列表中使用,或者我输错了?

谢谢,

1 个答案:

答案 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
相关问题