我正在尝试通过基于(非唯一)值的字典“分组”(这可能不是正确的表达式,但将其用作基于 SQL 的代理)来重新构建 Python 字典列表。我已经接近了,但是我遇到了最后的障碍,因为我无法弄清楚如何将每个值重新分配给一个名称(即我最终得到了一个看起来像元组而不是字典的东西)。
此外,我还有一个多余的列表(即我的输出以 [[{...}]] 而不是 [{...}] 结尾。
我在这里使用了这个例子:
这让我非常接近我想要的,但是我被困在最后阶段!
market = [
{'selection_id': 1099, 'value': '11', 'value_name': 'a'},
{'selection_id': 1099, 'value': '78', 'value_name': 'p'},
{'selection_id': 1097, 'value': '39', 'value_name': 'b'},
{'selection_id': 1097, 'value': '52', 'value_name': 'f'},
{'selection_id': 1098, 'value': '98', 'value_name': 'd'},
{'selection_id': 1099, 'value': '13', 'value_name': 'y'},
{'selection_id': 1098, 'value': '4', 'value_name': 'r'},
]
new_structure = {}
new_structure2 = []
for z in market:
new_structure.setdefault(z['selection_id'], []).append((z['value'], z['value_name']))
t = [{'selection_id': m, 'value_dict': n} for m, n in new_structure.items()]
new_structure2.append(t)
print(new_structure2)
这输出为:
[[{'selection_id': 1099, 'value_dict': [('11', 'a'), ('78', 'p'), ('13',
'y')]}, {'selection_id': 1097, 'value_dict': [('39', 'b'), ('52', 'f')]},
{'selection_id': 1098, 'value_dict': [('98', 'd'), ('4', 'r')]}]]
这是非常接近的,但是我的目标是:
[{'selection_id': 1099,
'value_dict': [{'value': '11', 'value_name': 'a'},
{'value': '78', 'value_name': 'p'},
{'value': '13', 'value_name': 'y'}]},
{'selection_id': 1097,
'value_dict': [{'value': '39', 'value_name': 'b'},
{'value': '52', 'value_name': 'f'}]},
{'selection_id': 1098,
'value_dict': [{'value': '98', 'value_name': 'd'},
{'value': '4', 'value_name': 'r'}]}]
我很欣赏它可能是一个非常简单的修复,但它目前正在逃避我,所以任何指导将不胜感激!