Python:在字典数组中查找部分匹配另一个字典的元素

时间:2018-12-21 10:39:01

标签: python

我有一个像这样的字典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具有相同surnamemyDict的元素,并返回{{1} }。

是否有一种无需手动遍历score即可实现这一目标的方法?

2 个答案:

答案 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并使用其内置的过滤功能。