我有一个像这样的字典myDict
:
{
'score': 1,
'surname': 'AA AA',
'name': 'AAA AAA'
}
我有一系列的字典myArray
像这样:
[
{
'score': 0.9,
'surname': 'AA AA',
'name': 'AAA AAA'
},
{
'score': 0.6,
'surname': 'BB BB',
'name': 'BBB BBB'
},
...
]
我正在寻找一个函数,该函数将在myArray
中找到与name
具有相同surname
和myDict
的元素,并返回{{1} }。
是否有一种无需手动遍历score
即可实现这一目标的方法?
答案 0 :(得分:2)
您也可以像这样通过smth遍历myArray:
def find_score(myDict, myArray):
name, surname = myDict['name'], myDict['surname']
for i in myArray:
if i['name'] == name and i['surname'] == surname:
return i['score']
答案 1 :(得分:1)
您可以使用列表推导,如下所示:
ls=[d for d in myArray if d["surname"]==myDict["surname"] and d["name"]==myDict["name"]]
这将为您提供myArray
中所有与myDict
中的名字和姓氏匹配的词典的列表。如果始终只有一个这样的值,则可以使用ls[0]["score"]
来获取分数。
尽管如此,尽管列表推导是一种简洁,紧凑的Python式处理方式,但从技术上讲,您仍在遍历myArray
。
否则,您可以考虑将myArray
转换为Pandas DataFrame并使用其内置的过滤功能。