3 回答

TA貢獻(xiàn)1934條經(jīng)驗(yàn) 獲得超2個(gè)贊
非常簡(jiǎn)單:遍歷列表。對(duì)于每個(gè)字典,將“extra”.“instock”復(fù)制到上一層并刪除原始的:
for outer_dict in product:
outer_dict["instock"] = outer_dict["extra"]["instock"]
del outer_dict["extra"]["instock"]
for outer_dict in product:
print(outer_dict)
輸出:
{'color': 'red', 'shape': 'round', 'extra': {'price': 'large', 'onsale': 'yes'}, 'instock': 'yes'}
{'color': 'blue', 'shape': 'square', 'extra': {'price': 'small', 'onsale': 'no'}, 'instock': 'yes'}

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊
lst = [
{'color': 'red',
'shape': 'round',
'extra': {'price': 'large',
'onsale': 'yes',
'instock': 'yes'}
},
{'color': 'blue',
'shape': 'square',
'extra': {'price': 'small',
'onsale': 'no',
'instock': 'yes'}
}
]
for d in lst:
d['instock'] = d['extra'].pop('instock')
# pretty print on screen:
from pprint import pprint
pprint(lst)
印刷:
[{'color': 'red',
'extra': {'onsale': 'yes', 'price': 'large'},
'instock': 'yes',
'shape': 'round'},
{'color': 'blue',
'extra': {'onsale': 'no', 'price': 'small'},
'instock': 'yes',
'shape': 'square'}]
或者你可以使用:
d['extra'].pop('instock', 'no')
如果沒有鍵(在這種情況下instock為默認(rèn)值)no

TA貢獻(xiàn)1835條經(jīng)驗(yàn) 獲得超7個(gè)贊
products = [
{'color': 'red',
'shape': 'round',
'extra': {'price': 'large',
'onsale': 'yes',
'instock': 'yes'}
},
{'color': 'blue',
'shape': 'square',
'extra': {'price': 'small',
'onsale': 'no',
'instock': 'yes'}
}
]
result_list = []
result = {}
for item in products:
for key,values in item.items():
if isinstance(values,dict):
for inner_key, inner_value in values.items():
#remove me if you want all of the inner items to level-up
if inner_key == "instock":
result[inner_key] = inner_value
else:
result[key] = values
result_list.append(result)
print (result_list)
輸出:
[{'color': 'blue', 'shape': 'square', 'instock': 'yes'}, {'color': 'blue', 'shape': 'square', 'instock': 'yes'}]
添加注釋以澄清在哪里修改,以防您也希望其他鍵升級(jí)
添加回答
舉報(bào)