你说这样的事情?
from pprint import pprint as pp
subdict1 = {'subdict1_item1':1, 'subdict1_item2':2}
subdict2 = {'subdict2_item1':3, 'subdict2_item2':4}
subdict3 = {'subdict3_item1': 5, 'subdict3_item1':6}
olddict = {
'old_key_1': [subdict1, subdict2],
'old_key_2': [subdict1, subdict2],
'old_key_3': [subdict1, subdict3],
}
newdict = {
'new_key_1': olddict['old_key_1'].append('old_key_1'),
'new_key_2': olddict['old_key_2'].append('old_key_2'),
'new_key_3': olddict['old_key_3'].append('old_key_3'),
}
或本
newdict = {
'new_key_1': 'old_key_1',
'new_key_2': 'old_key_2',
'new_key_3': 'old_key_3',
}
def getnew(newkey, newdict, olddict):
if newkey in newdict:
oldkey = newdict[newkey]
if oldkey in olddict:
preitem = olddict[ oldkey ] # returns a list with two items
item = []
item.append([preitem[0]]) # makes subdict1 wrapped in a list
item.append([preitem[1]]) # makes subdict2/3 wrapped in a list
item.append([oldkey])
return item
else:
raise KeyError('newdict has no matching olddict key')
结果:
pp(getnew('new_key_1', newdict, olddict))
print
pp(getnew('new_key_2', newdict, olddict))
print
pp(getnew('new_key_3', newdict, olddict))
[[{'subdict1_item1': 1, 'subdict1_item2': 2}],
[{'subdict2_item1': 3, 'subdict2_item2': 4}],
['old_key_1']]
[[{'subdict1_item1': 1, 'subdict1_item2': 2}],
[{'subdict2_item1': 3, 'subdict2_item2': 4}],
['old_key_2']]
[[{'subdict1_item1': 1, 'subdict1_item2': 2}],
[{'subdict3_item1': 6}],
['old_key_3']]
当你说'[ 'subdict1'] [ 'subdict2'] [ 'old_key_1']'你的意思是像一个嵌套字典 - >'{'subdict1':{'subdict2':'old_key_1'}}'或者一系列的字典?我没有那么好。如果你可以发布为什么你想要这样做,我们可以以不同的方式帮助你(也许更简单的方法)来处理你的问题 – Hassek 2012-07-13 16:53:44
是的,它是一个嵌套的字典,但old_key_1是一个键 - 就像{'subdict1':{subdict2:{ old_key_1:some_value,old_key_2:some_other value}}}。它实际上是一个在Python中转换为字典的JSON-rpc对象。 – paulski 2012-07-13 19:51:43