<p>按lang按相反顺序对输入列表排序-<code>en</code>将出现在<code>de</code>之前,然后制作一个dict,其中键是tuple<code>(start, end)</code>并使用<code>dict.values()</code>。因为<code>de</code>将在<code>en</code>之后出现。如果存在具有相同密钥start、end的警报,de将更新该密钥的值</p>
<pre><code>data = {
"alerts": [
{
"description": "Es tritt leichter Frost auf.",
"end": 1613379600,
"event": "FROST",
"lang": "de",
"sender_name": "DWD / Nationales Warnzentrum Offenbach",
"start": 1613322000
},
{
"description": "There is a risk of wind gusts",
"end": 1613408400,
"event": "wind gusts",
"lang": "en",
"sender_name": "DWD / Nationales Warnzentrum Offenbach",
"start": 1613336400
}]}
unique = {(item['start'], item['end']):item for item in
sorted(data['alerts'], key=lambda x: x['lang'], reverse=True)}
data['alerts'] = sorted(unique.values(), key=lambda x: (x['start'], x['end']))
</code></pre>
<p>输出</p>
<pre><code>{
"alerts": [
{
"description": "Es tritt leichter Frost auf.",
"end": 1613379600,
"event": "FROST",
"lang": "de",
"sender_name": "DWD / Nationales Warnzentrum Offenbach",
"start": 1613322000
},
{
"description": "There is a risk of wind gusts",
"end": 1613408400,
"event": "wind gusts",
"lang": "en",
"sender_name": "DWD / Nationales Warnzentrum Offenbach",
"start": 1613336400
}
]
}
</code></pre>
<p>不确定是否需要按时间排序的结果,以便删除该部分</p>