Size: a a a

2021 February 18

KK

Kirill (Cykooz) Kuzm... in rannts
Roman Bolkhovitin
сериализует в "null"
Ну так может самому сделать это преобразование в словаре, прежде чем скармливать его в json. А то какое-то не очевидное поведение. Сегодня это в "null" превращается, а завтра в пустую строку.
Кроме-того десериализация будет тоже не очевидна - "null" надо в None превращать, или это реальный ключ такой был?
источник

EK

Elena K in rannts
то, что при сериализации None->'null' в json для меня ок. Мне надо что бы сортировка не падала..
Вопрос как реализовать "элегантную" замену None  -> "null. Хотелось бы без явного прогона словаря и замены ключей..
источник

EK

Elena K in rannts
переопределить что-нибудь или ключиками поиграться
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Elena K
то, что при сериализации None->'null' в json для меня ок. Мне надо что бы сортировка не падала..
Вопрос как реализовать "элегантную" замену None  -> "null. Хотелось бы без явного прогона словаря и замены ключей..
if None in d:
   d['null'] = d.pop(None)

Хотя если словарь будет вложенный - то придётся пилить прогон рекурсивный
источник

EK

Elena K in rannts
да, структура вложенная, вложенность может быть любая..
источник

EK

Elena K in rannts
ну ок, если только явно, значит явно..
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Elena K
да, структура вложенная, вложенность может быть любая..
А есть гарантия что в словаре не будет реального поля с именем 'null'?
источник

EK

Elena K in rannts
на данный момент по контексту не может, но вообще гарантии такой нет))
источник

RB

Roman Bolkhovitin in rannts
Kirill (Cykooz) Kuzminykh
А есть гарантия что в словаре не будет реального поля с именем 'null'?
хм... прикольно ты придумал ))

>>> import json
>>> json.dumps({None: 1, "null": 2})
'{"null": 1, "null": 2}'
>>> json.loads(json.dumps({None: 1, "null": 2}))
{'null': 2}
>>>
источник

EK

Elena K in rannts
какой питон? где-то видела, что в 3.7 уже зафиксили
источник

RB

Roman Bolkhovitin in rannts
Elena K
какой питон? где-то видела, что в 3.7 уже зафиксили
3.8.5
источник

『Serg』 in rannts
Roman Bolkhovitin
хм... прикольно ты придумал ))

>>> import json
>>> json.dumps({None: 1, "null": 2})
'{"null": 1, "null": 2}'
>>> json.loads(json.dumps({None: 1, "null": 2}))
{'null': 2}
>>>
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Elena K
ну ок, если только явно, значит явно..
Ну есть простой, но "тормозной" вариант сделать это в "одну" строчку, без проходов по словарю в ручную и его изменения.
json_str = json.dumps(
 json.loads(
   json.dumps(d)
 ),
 sort_keys=True
)
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Чёрт. Зашёл на англоязычный чат по питону, и даже гордость за "наших" появляется - там иногда такой примитивизм спрашивают. Например: "Число раундов - 76, из них 35 - победы и 41 -  проигрыши. Как посчитать процент побед?"
источник

БС

Байт Словович... in rannts
На кулькуляторах есть кнопочка %, вот она умеет считать. А в питоне тоже есть, но такую хуйню выдает.. поэтому и приходится спрашивать
источник

SB

Sergey Belash in rannts
Kirill (Cykooz) Kuzminykh
Чёрт. Зашёл на англоязычный чат по питону, и даже гордость за "наших" появляется - там иногда такой примитивизм спрашивают. Например: "Число раундов - 76, из них 35 - победы и 41 -  проигрыши. Как посчитать процент побед?"
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Фишка в том, что после этого вопроса было ещё с 10-ок коментов, пока наконец не пришёл человек, который помнит школьную математику и не дал правильный ответ.
источник

БС

Байт Словович... in rannts
пруф
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Вот такие варианты там были, в порядке поступления
(win/lose) * 100
[(win/lose) * 100] / total
(win/(win + lose)) * 100
(win/total) * 100
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Похоже нельзя переслать что бы можно было открыть оригинал
источник