У вас есть две проблемы:
[
{
"Ukraine": [
{
"Credits": 500,
"Name": "Clever goat",
"Price": {
"Amount": 100,
"Currency": "UAH"
}
},
{
"Credits": 1000,
"Name": "Smart hare",
"Price": {
"Amount": 190,
"Currency": "UAH"
}
}
]
},
{
"USA": [
{
"Credits": 500,
"Name": "Clever goat",
"Price": {
"Amount": 10,
"Currency": "USD"
}
},
{
"Credits": 1000,
"Name": "Smart hare",
"Price": {
"Amount": 19,
"Currency": "USD"
}
}
]
}
]
Price
должно иметь тип Price
, а не int
. public class Purchase
{
public int Credits { get; set; }
public string Name { get; set; }
public Price Price { get; set; }
}
Если вы опасаетесь проблем, связанных с использованием словаря местных жителей, и предпочитаете следовать своей исходной стратегии, Упорядоченные словари из коллекций python 2.7 и 3.1.OrderedDicts. позволяет восстанавливать элементы словаря в том порядке, в котором они были впервые вставлены
На основе @ShawnFumo отвечают, что я придумал это:
def destruct(dict): return (t[1] for t in sorted(dict.items()))
d = {'b': 'Banana', 'c': 'Carrot', 'a': 'Apple' }
a, b, c = destruct(d)
(Замечают порядок пунктов в dict)
Что ж, если вы хотите, чтобы это было в классе, вы всегда можете сделать это:
class AttributeDict(dict):
def __init__(self, *args, **kwargs):
super(AttributeDict, self).__init__(*args, **kwargs)
self.__dict__.update(self)
d = AttributeDict(a=1, b=2)
Может быть, вы действительно хотите сделать что-то подобное?
def some_func(a, b):
print a,b
params = {'a':1,'b':2}
some_func(**params) # equiv to some_func(a=1, b=2)
Не знаю, хороший ли это стиль, но
locals (). Update (params)
поможет. Затем у вас есть a
, b
и все, что было в вашем params
dict, доступно как соответствующие локальные переменные.