我有一个字典列表或列表字典,d1和d2如下。
d1 = [{'A':1, 'B':2, 'score':1},{'A':11, 'B':22, 'score':2},{'A':111, 'B':2222, 'score':3}]
d2 = {'A':[1,11,111], 'B':[2,22,222], 'score':[1,2,3]}
我需要按键的值“过滤”字典。例如,我需要“A”和“B”的值,其中得分最高。我想要的是:
{'A':111, 'B':2222}
我可以做的一种方法是将字典列表转换为pandas数据帧,过滤行并转换回字典。但那真是效率低下......
非常感谢您提前获得建议。
这样的事怎么样?
d1 = [{'A':1, 'B':2, 'score':1}, {'A':11, 'B':22, 'score':2},{'A':111, 'B':2222, 'score':3}]
d2 = {'A':[1,11,111], 'B':[2,22,222], 'score':[1,2,3]}
a = []
for i in d1:
a.append(i['score'])
b = max(a)
for i in d1:
if i['score'] == b:
c = i
del c['score']
print(c)
(xenial)vash@localhost:~/python/stack_overflow$ python3.7 sent_find.py {'A': 111, 'B': 2222}
然后将d1转换为d2样式
idx=d2['score'].index(max(d2['score']))
_new = {'A':d2['A'][idx], 'B': d2['B'][idx]}