Как использовать NSEnumerator с NSMutableDictionary?

Также стоит попробовать библиотеку readchar , которая частично основана на рецепте ActiveState, упомянутом в других ответах.

Установка:

pip install readchar

Использование:

import readchar
print("Reading a char:")
print(repr(readchar.readchar()))
print("Reading a key:")
print(repr(readchar.readkey()))

Протестировано в Windows и Linux с помощью Python 2.7.

В Windows поддерживаются только клавиши, которые сопоставляются буквам или управляющим кодам ASCII (Backspace, Enter, Esc , Tab, Ctrl + письмо ). В GNU / Linux (в зависимости от точного терминала, возможно?) Вы также получаете клавиши Insert, Delete, Pg Up, Pg Dn, Home, End и F n ... но тогда есть проблемы, разделяющие эти специальные клавиши из Esc.

Предостережение. Как и в большинстве (все?) ответы здесь, сигнальные клавиши, такие как Ctrl + C, Ctrl + D и Ctrl + Z, захватываются и возвращаются (как '\x03', '\x04' и '\x1a' соответственно); вашей программе может быть трудно отменить.

20
задан Devoted 30 June 2009 в 06:56
поделиться

2 ответа

Если вам не нужно использовать NSEnumerator, вы можете использовать быстрое перечисление (которое быстрее) и краткое.

for(NSString *aKey in myDictionary) {
    NSLog(@"%@", aKey);
    NSLog(@"%@", [[myDictionary valueForKey:aKey] string]); //made up method
}

Также вы можете используйте Enumerator с быстрым перечислением:

NSEnumerator *enumerator = [myDictionary keyEnumerator];

for(NSString *aKey in enumerator) {
    NSLog(@"%@", aKey);
    NSLog(@"%@", [[myDictionary valueForKey:aKey] string]); //made up method
}

Это полезно для таких вещей, как выполнение обратного перечислителя в массиве.

93
ответ дан 29 November 2019 в 22:26
поделиться

Из справочника по классу NSDictionary :

Вы можете перечислить содержимое словаря по ключу или по значению, используя NSEnumerator объект, возвращенный keyEnumerator и objectEnumerator соответственно.

Другими словами:

NSEnumerator *enumerator = [myMutableDict keyEnumerator];
id aKey = nil;
while ( (aKey = [enumerator nextObject]) != nil) {
    id value = [myMutableDict objectForKey:anObject];
    NSLog(@"%@: %@", aKey, value);
}
8
ответ дан 29 November 2019 в 22:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: