我有一个嵌套的字典,例如:
d = {1: {490: {'angle': 0.9439585203011613,
'distance': 0.10334710770757652,
'gid': 19675.0,
'index': 1.3627196218429294,
'length': 0.3154139938341916},
491: {'angle': 0.6009780397464144,
'distance': 0.1914804717173812,
'gid': 19679.0,
'index': 0.8333609923300924,
'length': 0.04090248086629692},
492: {'angle': 0.9299210633144231,
'distance': 0.1392632853868988,
'gid': 19680.0,
'index': 1.1225744054577835,
'length': 0.053390056756461614},
493: {'angle': 0.9499097709829176,
'distance': 0.16460473640157167,
'gid': 19681.0,
'index': 1.6564270961214378,
'length': 0.5419125887369485}}}
我想得到的是嵌套键 (490, 491, 492, 493),其中 index
键的嵌套嵌套值是最低的。基本上:
for k, v in d.items():
for kk, vv in v.items():
print(kk, vv['index'])
490 1.3627196218429294
491 0.8333609923300924
492 1.1225744054577835
493 1.6564270961214378
我想要的值是 491
。
我一直坚持使用 min
。我知道技巧应该在 min
函数和 key
参数的用法中,但我很困惑如何在这种嵌套情况下正确使用它。< /p>
答案 0 :(得分:1)
如果 ImportError : No module named face_recognition
是问题中的字典:
d
打印:
mn = min(
[(i, k) for i in d.values() for k in i],
key=lambda k: k[0][k[1]]["index"],
)
print(mn[1])
答案 1 :(得分:0)
使用熊猫 -
import pandas as pd
print(pd.DataFrame(d[1]).transpose().sort_values('index').head(1).index) #491
答案 2 :(得分:0)
使用key作为每个子字典的索引值。
min(d[1],key=lambda x:d[1][x]['index'])
注意这里使用的是 d[1]
,d
字典只有一个键。
像这样在完整字典上生成最小值列表:
[min(subd,key=lambda x:subd[x]['index']) for subd in d.values()]
作为字典:
{k:min(subd,key=lambda x:subd[x]['index']) for k,subd in d.items()}