你說這樣的事情?
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