回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>给出字典列表如下:</p>
<pre class="lang-py prettyprint-override"><code>dictionaries = [
{'column': 'NRX_TOTAL', 'severity': 1, 'threshold': 0.1},
{'column': 'TRX_TOTAL', 'severity': 1, 'threshold': 0.1},
{'column': 'NRX_TOTAL', 'severity': 2, 'threshold': 0.15},
{'column': 'TRX_TOTAL', 'severity': 2, 'threshold': 0.15},
{'column': 'NRX_TOTAL', 'severity': 3, 'threshold': 0.25},
{'column': 'TRX_TOTAL', 'severity': 3, 'threshold': 0.25},
{'column': 'TRX_TOTAL', 'severity': 4, 'threshold': 0.25}
]
</code></pre>
<p>我想要一个字典的最终列表,每个<code>'column'</code>键的<code>'severity'</code>值最高。例如:</p>
<p>上述输出应为:</p>
<pre class="lang-py prettyprint-override"><code>output = [{'column': 'NRX_TOTAL', 'severity': 3, 'threshold': 0.25},
{'column': 'TRX_TOTAL', 'severity': 4, 'threshold': 0.25}]
</code></pre>
<p>因为<code>NRX_TOTAL</code>列的最高<code>'severity'</code>是3,而<code>TRX_Total</code>列的最高<code>'severity'</code>是4</p>
<p>下面是一个代码片段,它完成了这项工作。关于如何改进有什么想法吗</p>
<pre class="lang-py prettyprint-override"><code>l_measure_thresholds_with_highest_severity_temp = []
l_disctinct_column_value = []
for l_dict in dictionaries:
l_temp_dict = {'column': '', 'severity': 0, 'threshold': 0}
x = l_dict['column']
if x not in l_disctinct_column_value:
l_disctinct_column_value.append(x)
l_temp_dict['column'] = x
l_measure_thresholds_with_highest_severity_temp.append(l_temp_dict)
l_measure_thresholds_with_highest_severity = list()
for i in l_measure_thresholds_with_highest_severity_temp:
l_temp_dict = {'column': '', 'severity': 0, 'threshold': 0}
dict_i_col = i['column']
dict_i_sev = i['severity']
dict_i_threshold = i['threshold']
for j in dictionaries:
dict_j_col = j['column']
dict_j_sev = j['severity']
dict_j_threshold = j['threshold']
if dict_i_col == dict_j_col:
if dict_i_sev < dict_j_sev:
l_highest_severity = dict_j_sev
l_highest_threshold = dict_j_threshold
else:
l_highest_severity = dict_i_sev
l_highest_threshold = dict_i_threshold
l_temp_dict['column'] = dict_i_col
l_temp_dict['severity'] = l_highest_severity
l_temp_dict['threshold'] = l_highest_threshold
l_measure_thresholds_with_highest_severity.append(l_temp_dict)
print(l_measure_thresholds_with_highest_severity)
</code></pre>