У меня есть язык конкретные словари следуют точно такую же структуру данных, единственное, что делает их отличается язык, смотрите пример ниже,Объединение значений словаря inPython
Так, в принципе у меня есть словарь, как следовать ВХОД
{
'english': [
{
'id': "field_1",
'label': "Items",
'type': "choicefield",
'choices': [
["", "All Items"],
[0, "Item 0"],
[1, "Item 1"],
[2, "Item 2"]
]
},
{
'id': "field_2",
'label': "Keywords",
'type': "textfield",
'choices': None
},
{
"id": "field_3",
"label": "Agree?",
"type": "checkbox",
"choices": None
},
],
'french': [
{
'id': "field_1",
'label': "Items (fr translated)",
'type': "choicefield",
'choices': [
["", "All Items (fr translated)"],
[0, "Item 0 (fr translated)"],
[1, "Item 1 (fr translated)"],
[2, "Item 2 (fr translated)"]
]
},
{
'id': "field_2",
'label': "Keywords (fr translated)",
'type': "textfield",
'choices': None
}
]
}
И то, что я хочу в качестве выходного сигнала является ответом API в следующем составе (которая в основном объединенный язык/переводные поля),
ЗАПЛАНИРОВАННЫЕ
[
{
'id': "field_1",
'label': {
'english': "Items",
'french': "Items (fr translated)",
},
'type': 'choicefield',
'choices': [
["", {"english": "All Items", "french": "All Items (fr translated)"}],
[0, {"english": "Item 0", "french": "Item 0 (fr translated)"}],
[1, {"english": "Item 1", "french": "Item 1 (fr translated)"}],
[2, {"english": "Item 2", "french": "Item 2 (fr translated)"}],
]
},
{
'id': "field_2",
'label': {
'english': "Keywords",
'french': "Keywords (fr translated)",
},
'type': 'textfield',
'choices': []
}
]
что уже сделано до сих пор
def merge_options(options_dict):
from copy import deepcopy
MERGE_FIELD_LIST = ['label']
languages = options_dict.keys()
data_copy = deepcopy(options_dict[languages[0]])
for i, item in enumerate(data_copy):
for field in MERGE_FIELD_LIST:
field_dict = {}
for lang in languages:
try:
field_dict.update({lang: options_dict[lang][i][field]})
except KeyError:
pass
item.update({field: field_dict})
return data_copy
Который на самом деле дает быть желательным или поле «метка», но я не в состоянии объединить поле опций, а также код, написанный очень уродливый, а не питонический способ делать, глядя на любой более быстрый и быстрый подход к этому.
Благодаря
(1) Что вы пробовали до сих пор? (2) Каков ваш вопрос? –
Привет, извините за то, что не предоставил достаточную информацию, просто обновленный вопрос с более подробной информацией. Спасибо – Adeel