matlab 冒号:列表中的运算符

41zrol4v  于 2023-01-21  发布在  Matlab
关注(0)|答案(1)|浏览(172)

我习惯使用Matlab和它强大的冒号运算符,Python中似乎也有类似的运算符,但当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的list上使用的结论,还是我输入错了?
谢谢你,

wfveoks0

wfveoks01#

我应该得出:只能在不包含dict的list上使用的结论,还是我输入错了?
这不是一个正确的结论。:可以与任何列表一起使用。
问题是data[0:2]是一个列表,如果你想得到data[0:2]中元素的'key2'值的列表,那么你需要把它写成一个列表解析:

>>> [v['key2'] for v in data[0:2]]
... ['value2', 'value4']

如果您更喜欢使用运算符而不是列表解析,可以使用以下代码:

>>> from operator import itemgetter
>>> map(itemgetter('key2'), data[0:2])
... ['value2', 'value4']

相关问题