回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>如果列表中的其他键相同,如何在<code>value_map</code>下添加新的时间戳作为嵌套的json?
下面是dicts的示例列表。你知道吗</p>
<pre><code>dicts = [{
"key": "v3_CA125_2019-09-19",
"sn": "M9257",
"value_map": {
"06:59:59": {
"V_615": "1",
"V_616": "2",
}
}
},
{
"key": "v3_CA125_2019-09-19",
"sn": "M9257",
"value_map": {
"10:59:59": {
"V_613": "30",
"V_614": "22"
}
}
},
{
"key": "v3_CA125_2019-09-23",
"sn": "M9257",
"value_map": {
"12:59:59": {
"V_615": "33"
}
}
},
{
"key": "v3_CA125_2019-09-23",
"sn": "M9257",
"value_map": {
"09:59:59": {
"V_602": "0.208984375"
}
}
}
]
</code></pre>
<p>我试图得到如下输出:</p>
<pre><code>dicts = [{
"key": "v3_CA125_2019-09-19",
"sn": "M9257",
"value_map": {
"06:59:59": {
"V_615": "1",
"V_616": "2",
},
"10:59:59": {
"V_613": "30",
"V_614": "22"
}
}
},
{
"key": "v3_CA125_2019-09-23",
"sn": "M9257",
"value_map": {
"12:59:59": {
"V_615": "33"
},
"09:59:59": {
"V_602": "0.208984375"
}
}
}
]
</code></pre>
<p>我试图在<code>value_map</code>后面加上<code>OrderedDict</code>,但到目前为止还没有找到某样东西。有什么建议吗?你知道吗</p>
<pre><code>from collections import OrderedDict
d = OrderedDict()
for l in dicts :
d.setdefault((l['partition_key'], l['sort_key'], l['sn']), set()).add(l['value_map'])
result = [{'partition_key': k[0], 'sort_key': k[1], 'sn':k[2], 'value_map': v.pop() if len(v) == 1 else v} for k, v in d.items()]
</code></pre>