Уведомления

Группа в Telegram: @pythonsu

#1 Май 25, 2014 12:50:23

Seganapa
От: Новороссийск
Зарегистрирован: 2012-07-31
Сообщения: 139
Репутация: +  0  -
Профиль   Отправить e-mail  

Наименьшее значение в Json объекте

Всем доброго дня.

Имеется Json объект, например:

{
"stoner": {
"level": 11,
"can_upgrade": "True",
"pop_tear_down": 2
},
"hide": {
"level": 9,
"can_upgrade": "True",
"pop_tear_down": 0
},
"wall": {
"level": 3,
"can_upgrade": "True",
"pop_tear_down": 0
}
}

Мне нужно получить ключ того элемента, у которого “level” наименьший т.е. в данном примере “wall”.

Гуглить бесполезно, очень мало информации на тему Json Python.

jsonobj = json.loads('{"stoner":{"level": 11,"can_upgrade": "True","pop_tear_down": 2},"hide": {"level": 9,"can_upgrade": "True","pop_tear_down": 0},"wall": {"level": 3,"can_upgrade": "True","pop_tear_down": 0}}')



—————————————————————–
Изучаю и параллельно использую Python 2.7

Офлайн

#2 Май 25, 2014 12:57:37

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Наименьшее значение в Json объекте

Seganapa

min(jsonobj[key]['pop_tear_down'] for key in jsonobj)

Отредактировано Singularity (Май 25, 2014 12:58:36)

Офлайн

#3 Май 25, 2014 13:00:12

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Наименьшее значение в Json объекте

Seganapa
Гуглить бесполезно, очень мало информации на тему Json Python.
Это называется “словарь”, “хэш-таблица”, “ассоциативный массив”, что из этого не гуглится?



Офлайн

#4 Май 25, 2014 13:03:32

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Наименьшее значение в Json объекте

Я б так сделал

min(d, key=lambda x: d[x]["level"])



Офлайн

#5 Май 25, 2014 13:04:48

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Наименьшее значение в Json объекте

FishHook
и ты такое пушишь в репозиторий на работе ?

Офлайн

#6 Май 25, 2014 13:17:44

Seganapa
От: Новороссийск
Зарегистрирован: 2012-07-31
Сообщения: 139
Репутация: +  0  -
Профиль   Отправить e-mail  

Наименьшее значение в Json объекте

min(jsonobj[key]['pop_tear_down'] for key in jsonobj)
Подходит как нельзя лучше!!! Спасибо!

Это называется “словарь”, “хэш-таблица”, “ассоциативный массив”, что из этого не гуглится?

Я гуглил именно насчет Json



—————————————————————–
Изучаю и параллельно использую Python 2.7

Офлайн

#7 Май 25, 2014 13:18:27

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Наименьшее значение в Json объекте

Singularity
FishHookи ты такое пушишь в репозиторий на работе ?
Вообще то да, а что?



Офлайн

#8 Май 25, 2014 13:19:46

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Наименьшее значение в Json объекте

Seganapa
Я гуглил именно насчет Json
Прочитай хоть какой-нибудь самый тоненький учебник по питону, сэкономишь массу времени.



Офлайн

#9 Май 25, 2014 13:40:56

Seganapa
От: Новороссийск
Зарегистрирован: 2012-07-31
Сообщения: 139
Репутация: +  0  -
Профиль   Отправить e-mail  

Наименьшее значение в Json объекте

min(jsonobj[key]['pop_tear_down'] for key in jsonobj)

А как сюда добавить условие?

Например нужно наименьшее значение из тех элементов у которых can_upgrade: True.

Я читал Учебники про python, только давненько. Потом начал писать на C#, а теперь вот опять python понадобился.

И эта задача на один денек, неужели мне нужно опять перечитывать литературу, чтобы решить данный вопрос…



—————————————————————–
Изучаю и параллельно использую Python 2.7

Офлайн

#10 Май 25, 2014 14:00:43

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Наименьшее значение в Json объекте

Seganapa

min(jsonobj[key]['pop_tear_down'] for key in jsonobj if key == 'key')
min(jsonobj[key]['pop_tear_down'] for key in jsonobj if jsonobj[key]['pop_tear_down'] < 0 )
acc = 0
for key in jsonobj:
    if jsonobj['pop_tear_down'] > 0 :
        acc +=1

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version