У меня есть словарь в Python, который имеет формат
dict = {
'p_id': 254,
's_id': 1,
'object_cnt': 4,
'type0': 0,
'address0': 65500,
'size0': 2,
'value0': 23.4,
'type1': 1,
'address1': 65535,
'size1': 2,
'value1': 45.7,
'type2': 2,
'address2': 65,
'size2': 0,
'value2': 1,
'type3': 3,
'address3': 535,
'size3': 0,
'value3': 0,
}
Поскольку object_cnt равен 4, в этом словаре будет четыре объекта.
'type0': 0,
'address0': 65500,
'size0': 2,
'value0': 23.4,
Вышесказанное можно рассматривать как один объект. Я хочу создать словарь формы
new_dict = {
'65500' : (2,23.4)
'65535' : (2,45)
'65' : (0,1)
'535' : (0,0)
}
#address of a object as key and (size_object,value_object) as value
Может кто-то помочь мне с этим?
Благодарность
2 ответа
Используйте форматирование строки:
res = {d['address%s' % i]: [d['size%s' %i], d['value%s' % i]] for i in range(d['object_cnt'])}
Выход:
{65: [0, 1], 535: [0, 0], 65500: [2, 23.4], 65535: [2, 45.7]}
a = {
'p_id': 254,
's_id': 1,
'object_cnt': 4,
'type0': 0,
'address0': 65500,
'size0': 2,
'value0': 23.4,
'type1': 1,
'address1': 65535,
'size1': 2,
'value1': 45.7,
'type2': 2,
'address2': 65,
'size2': 0,
'value2': 1,
'type3': 3,
'address3': 535,
'size3': 0,
'value3': 0,
}
n = a['object_cnt']
new_dict = dict()
for i in range(n):
new_dict[str(a['address{}'.format(i)])]=(a['size{}'.format(i)],a['value{}'.format(i)])
print(new_dict)
#{'65500': (2, 23.4), '65535': (2, 45.7), '65': (0, 1), '535': (0, 0)}
Похожие вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.