Я привык использовать 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, или я неправильно его печатаю?
Спасибо,
x
указаниеx[a:b]
возвращает фрагментx
, первый индекс которого равенa
, а последний индекс равенb-1
включительно. Но это все же список. В вашем случае этот список содержит два словаря. Если вы хотите получить доступ к элементу dict, вы должны сначала выбрать один элемент из списка (или из среза). Например.data[0:2][1]['key2']
илиdata[1]['key2']
- person Tom Karzes   schedule 28.10.2017:
? Его использование при указании словаря никак не связано с его использованием в слайсе[0:2]
. Любая последовательность может быть нарезана, включая списки, кортежи и строки, независимо от класса объектов, к которым относятся элементы. - person cdarke   schedule 28.10.2017