对不起,我真的不知道要把标题放到什么位置,我希望这个例子足够
我有一个这种格式的对象:
{
'key[0]': 'value 0',
'key[1]': 'value 1',
'key[2]': 'value 2'
}
我希望得到一个像这样的对象:
{
'key': [
'value 0',
'value 1',
'value 2'
]
}
我能收到的另一个对象是这样的:
{
'key[subkey0]': 'value 0',
'key[subkey1]': 'value 1',
'key[subkey2]': 'value 2'
}
我想得到:
{
'key': {
'subkey0': 'value 0',
'subkey1': 'value 1',
'subkey2': 'value 2'
}
}
我的问题是,有没有这样做的lib?如果没有,那么最有效/最优化的方法是什么?
您可以认为,在第一种情况下,我收到的列表将始终完整,这意味着不会跳过任何号码
答案 0 :(得分:0)
这是一个开始:
db.products.find({name: "4-Year Protection Plan - Geek Squad"}, {name: 1, sku: 1}).limit(10)
输出:
from collections import defaultdict
import re
import pprint
def convert(d):
result = defaultdict(dict)
for key, value in d.items():
main, sub = re.match(r'(\w+)\[(\w+)\]', key).groups()
result[main][sub] = value
result = dict(result) # just for display really
pprint.pprint(result)
convert({
'key1[subkey0]': 'value 0',
'key1[subkey1]': 'value 1',
'key2[subkey0]': 'value 2',
'key2[subkey1]': 'value 3',
})
答案 1 :(得分:0)
对于第一种情况,
old = {
'key[0]': 'value 0',
'key[1]': 'value 1',
'key[2]': 'value 2'
}
new = dict()
the_key = old.keys()[0].split("[")[0]
new[the_key] = list()
for key in old:
new[the_key].append(old[key])
print new
通过[
拆分旧字典键之一以获取真实密钥。然后使用此键构造新的dict。它让我觉得这是一种不好的做法,但它确实有效。所以你可以看一下。