Форум сайта python.su
Добрый день.
У меня есть такие переменные
list1=['sth param1', 'aesdf', 'asdasd','asdsda'] list2=['sth param2', 'asdasds', 'sdasdd',asdasdasa'] list3=['sth param3','sadasd','asdas] ''' Количество параметров у листов различно или одинаково ''' type='adsad' num='12332'
{ 'type':'adsad', 'num':'12332', list:[ 'list1':[ 'sth param1', 'sth param2', 'sth param3', ], 'list2':[ 'aesdf', 'asdasds', 'sadasd', ], 'list3':[ 'asdasd', 'sdasdd', 'asdas', ], 'list4':[ 'asdsda', 'asdasdasa', '', ], ] }
Офлайн
Конкретно под ваш пример, однако в реальности так писать не стоит -дурной тон . К тому же вы совершаете потенциальную ошибку переопределяя встроенные функции Питона - в данном случае type().
import json, collections list1=['sth param1', 'a', 'aa','aaa'] list2=['sth param2', 'b', 'bb','bbb'] list3=['sth param3', 'c','cc'] type_of_something='my_value' num='2012' tmp=map(None, list1, list2, list3) print json.dumps({'type': type_of_something, 'num': num, 'list': collections.OrderedDict((('list1', tmp[0]), ('list2', tmp[1]), ('list3', tmp[2]), ('list4', tmp[3]) )) })
{"list": {"list1": ["sth param1", "sth param2", "sth param3"], "list2": ["a", "b", "c"], "list3": ["aa", "bb", "cc"], "list4": ["aaa", "bbb", null]}, "num": "2012", "type": "my_value"}[s][/s]
Отредактировано JOHN_16 (Дек. 13, 2012 23:33:08)
Офлайн
Да, я такое решение уже принимал во внимание, но тем не менее это решение довольно вялое.
Может быть есть более адекватные варианты решения поставленной задачи?
Офлайн
kise97
Что значит вялое? каким вы видите “адекватное” решение. В любой форме изъяснитесь.
Офлайн
Адекватного ответа, увы, но дать не смогу. Плохо выражаю письменно свои мысли.
Ну к примеру может быть есть какие либо классы или расширения к python для создания JSON?
Офлайн
kise97
Т.е. вы хотите ручками, с нуля создать JSON?
Офлайн
json.JSONEncoder().encode({"type": type1, "num": num, "list": {"list1": list1, "list2": list2, "list3": list3}})
class MyEncoder(json.JSONEncoder): def default(self, type1, num, list1, list2, list3): return [{"type": type1, "num": num, "list": {"list1": list1, "list2": list2, "list3": list3}}]
Офлайн