파이썬 2에서는 OrderedDict
을 사용할 때 목록을 반환 한 keys
메서드를 사용하여 삽입 된 순서대로 키를 가져올 수있었습니다. 그러나 파이썬 3에서 :Python 3에서 OrderedDict - 순서대로 키를 얻는 방법?
rows = OrderedDict()
rows[0]=[1,2,3]
rows[1]=[1,2,3]
image = [rows[k] for k in rows.keys()[:2]]
를 내가 얻을 :
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: 'odict_keys' object is not subscriptable
I 예를 here에 대한 조언으로 확실히 list(rows)[:2]
을 수행 할 수 있습니다 -하지만이 순서대로 나에게 열쇠를 얻을 보장? 이게 올바른 방법일까요?
UPDATE : 파이썬 2 코드가 더 나은 것 같이 : 물론 여전히 파이썬에서 동일한 오류로 불어
image = [v for v in rows.values()[:2]]
3
예,'list (rows)'를 사용하면 순서가 보장 된'__iter__'과'__next__'를 사용하기 때문에 키를 순서대로 얻는 올바른 방법입니다. 처음 2 개의 키만 필요하면'list (rows) [: 2]'대신'itertools.islice (rows, 2)'를 생각해 볼 수도 있습니다 ... – mgilson
Thanks @mgilson - 더 빠르다 - 작은 목록을 복사하거나 itertools 모듈을 사용한다. 아마도 대답을 시도 할 것인가? :) –