Задать вопрос
@adron90

Как сравнить ключи в словаре?

пишу парсер фоток в контакте
есть словарь. вот его ключи
[dict_keys([ 'photo_2560', 'photo_1280', 'width', 'album_id', 'post_id', 'date', 'owner_id', 'photo_807', 'photo_604', 'id', 'photo_130', 'text'])]
photo_807, photo_604, photo_130, photo_2560, photo_1280
в этих ключах ссылки на фотки.
чем больше число тем выше разрешение фотки
в общем нужно скачать фото с самым высоким разрешением которое доступно
к тому же некоторые ключи, на пример, photo_2560 не в каждом словаре присутсвует
  • Вопрос задан
  • 2475 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
Допустим, имеем следующие ключи:
keys = ['photo_2560', 'photo_1280', 'width', 'album_id', 'post_id', 'date', 'owner_id', 'photo_807', 'photo_604', 'id', 'photo_130', 'text']

Следующая функция вернет максимальное разрешение (число):
max(map(lambda s: int(s[6:]), filter(lambda s: s[:6]=='photo_', keys)))

Ну и вот так можно получить ключ словаря:
'photo_'+str(max(map(lambda s: int(s[6:]), filter(lambda s: s[:6]=='photo_', keys))))
Ответ написан
Комментировать
adugin
@adugin Куратор тега Python
>>> items = [ 'photo_2560', 'photo_1280', 'width', 'album_id', 'post_id', 'date', 'owner_id', 'photo_807', 'photo_604', 'id', 'photo_130', 'text']
>>> max((item for item in items if item.startswith('photo_')), key=lambda x: int(x[6:]))
'photo_2560'
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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