字典/ For循环仅返回一个值?

时间:2020-11-08 09:44:16

标签: python

我创建了list_cv,并想编写一个返回人物姓名的函数,因此,例如,如果我键入has_expereince_as(list_cv,'bi_analyst'),则应返回值'Marry'和'James'。 但是,当我给“ bi分析师”时,我的函数仅返回一个值“ Marry”。 我找不到原因。

list_cv =[{'user': 'Marry','jobs': ['data analyst','bi analyst']},
           {'user': 'John','jobs': ['data specialist', 'data engineer', 'financial analyst']},
           {'user': 'James','jobs': ['bi analyst', 'cloud engineer', 'data analyst']}]

 def has_experience_as(list_cv,job_title):
     position=[]
     for i in range(len(list_cv)):
         if job_title in (list_cv[i]['jobs']):
             position.append(list_cv[i]['user'])
             return position

             has_experience_as(list_cv,'data analyst')

它只返回'Marry'

3 个答案:

答案 0 :(得分:2)

此行必须在for循环的 之外。

return position

当前,您要在添加第一个位置后返回,但要等到所有位置都添加后再返回结果。

答案 1 :(得分:1)

我想你会在循环中得到回报。使用此代码,您应该会很好:

list_cv =[{'user': 'Marry','jobs': ['data analyst','bi analyst']},
           {'user': 'John','jobs': ['data specialist', 'data engineer', 'financial analyst']},
           {'user': 'James','jobs': ['bi analyst', 'cloud engineer', 'data analyst']}]

def has_experience_as(list_cv,job_title):
    position=[]
    for i in range(len(list_cv)):
        if job_title in (list_cv[i]['jobs']):
            position.append(list_cv[i]['user'])

    return position

has_experience_as(list_cv,'data analyst')

答案 2 :(得分:0)

您是要在第一次通过时返回还是要在返回之前进行迭代?

list_cv =[{'user': 'Marry','jobs': ['data analyst','bi analyst']},
          {'user': 'John','jobs': ['data specialist', 'data engineer', 'financial analyst']},
          {'user': 'James','jobs': ['bi analyst', 'cloud engineer', 'data analyst']}]

def has_experience_as(list_cv,job_title):
    position=[]
    for i in range(len(list_cv)):
        if job_title in (list_cv[i]['jobs']):
            position.append(list_cv[i]['user'])
    return position

has_experience_as(list_cv,'data analyst')