Предложения по улучшению, как я перебираю значения словаря? - PullRequest
0 голосов
/ 20 марта 2011

Вот то, что я использовал:

for i in iter(SHAPES):
    SHAPES[i].drawOrder(97)
    SHAPES[i].alpha(CFG["SHP_alpha"])
    .
    .

Вот что я подумал сделать:

for i, v in app.SHAPES.items():
    v.drawOrder(97)
    v.alpha(CFG["SHP_alpha"])
    .
    .

Что из двух я должен использовать?Есть ли другие способы сделать это?

Ответы [ 3 ]

6 голосов
/ 20 марта 2011

Если вам не нужен ключ, просто проигнорируйте его и используйте .itervalues(). Если вам нужны и ключ, и значение, .iteritems() - это действительно путь. Обратите внимание, что в Python 3 те, кто избавился от префикса iter, а Python 2 .values() и .items() (которые возвращали списки) исчезли. Они имеют свое (редкое) использование, но когда вы просто повторяете, нет необходимости копировать половину словаря.

И никогда не вызывайте iter самостоятельно, если вам действительно не нужен итератор (например, для next). Что едва ли чаще, чем никогда;) for i in iterable уже использует iter(iterable) неявно.

0 голосов
/ 20 марта 2011

Опция, обеспечивающая большую гибкость для словаря, заключается в использовании enumerate () и dict.iteritems ().

for i, (k,v) in enumerate(SHAPES.iteritems()):
   print "My index is {0}, key is {1}, and value is {2}".format(i, k, v)
0 голосов
/ 20 марта 2011

Перебирать значения в dict.

for v in SHAPES.itervalues():
    v.drawOrder(97)
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...