我正在使用python 3.6和Django 2.0。我有这样的字典/ json:
dict = [
{'object A': '100'},
{'object B': '101'},
{'object C': '102'},
]
和
data = [
{'title': 'object A', 'description': 'Some Text'},
{'title': 'object B', 'description': 'Some Text'},
{'title': 'object C', 'description': 'Some Text'},
]
然后尝试在另一个函数中访问该数字
output = []
for x in range(0, len(dict)):
j = {
'id': x,
'title': data[x]['title'],
'description': data[x]['description'],
'value': dict[x][data[x]['title']],
}
output.append(j)
我遇到的问题是dict [x] []中的数据[x] [' title']是以字符串形式出现而不是切片。
我尝试在将标题放入之前将其拆分,我尝试手动添加'之前和之后。
我的第一个问题是,这可能吗?如果是这样,我将如何实现?
我的第二个问题是,是否有更好的方法来实现这一目标,可能使用.keys()或其他类似的东西?
提前致谢
答案 0 :(得分:0)
如果您的数据和字典列表可以保证具有一对一的映射关系,并且每个列表中的所有项目都是按键区分的,那么代码可以像以下一样进行优化,使用相关的排序键盘技巧:
def gen_output(my_dict_list, my_data_list):
my_dict_list.sort(key=lambda x: next(iter(x.keys()), None))
my_data_list.sort(key=lambda x: x['title'])
output = [{
'id': idx,
'title': my_data_list['title'],
'description': my_data_list['description'],
'value': my_dict[my_data_list['title']],
} for idx, (my_dict, my_data_list) in enumerate(zip(my_dict_list, my_data_list))]
return output
if __name__ == "__main__":
my_dict_list = [
{'object A': '100'},
{'object B': '101'},
{'object C': '102'},
]
my_data_list = [
{'title': 'object B', 'description': 'Some Text'},
{'title': 'object A', 'description': 'Some Text'},
{'title': 'object C', 'description': 'Some Text'},
]
print(gen_output(my_dict_list, my_data_list)
然后你可以得到这样的结果:
[{'description': 'Some Text', 'id': 0, 'title': 'object A', 'value': '100'},
{'description': 'Some Text', 'id': 1, 'title': 'object B', 'value': '101'},
{'description': 'Some Text', 'id': 2, 'title': 'object C', 'value': '102'}]