从列表构造字典

时间:2018-03-09 07:26:02

标签: python list dictionary

我只是一个初学者所以请不要介意..

我正在寻找这个答案,如果得分列表中的得分高于60,那么应该说通过或者失败,我真的没有得到如何实现它

{'steve': [22, 55, 'fail'], 'saul': [59, 85, 'pass'], 'paul': [28, 59, 'fail'], 'chimpy': [5, 60, 'pass']}

我只是一个没有成功的代码

def construct_dictionary_from_lists(names_list, ages_list, scores_list):
   dic = {}
   agee = ages_list
   sc = scores_list
   name = names_list
   for i in range(len(name)):
      for a in range(len(agee)):
         for s in range(len(sc)):
             for x in range(len(sc)):
                if x >= 60:
                    print('Pass')
                else:
                    print('Fail')
             dic[name[i]] = [agee[a], sc[s], sc[x]]
   return dic
print(construct_dictionary_from_lists(["paul", "saul", "steve", "chimpy"],[28, 59, 22, 5],[59, 85, 55, 60]))

我低于OUTPUT

Fail
Fail
Fail
{'paul': [5, 60, 60], 'saul': [5, 60, 60], 'steve': [5, 60, 60], 'chimpy': [5, 60, 60]}

5 个答案:

答案 0 :(得分:3)

试试这个:

def construct_dictionary_from_lists(names_list, ages_list, scores_list):
   dic = {}
   for name, age, score in zip(names_list, ages_list, scores_list):
       res = 'Fail'
       if score >= 60:
          res = 'Pass'
       dic[name] = [age, score, res]
   return dic

print(construct_dictionary_from_lists(["paul", "saul", "steve", "chimpy"],[28, 59, 22, 5],[59, 85, 55, 60]))

答案 1 :(得分:2)

您可以使用zip

name_list, age_list, score_list = ["paul", "saul", "steve", "chimpy"], [28, 59, 22, 5], [59, 85, 55, 60]
out = {name: [age, score, 'pass' if score >= 60 else 'fail'] for name, age, score in zip(name_list, age_list, score_list)}
print(out)
# {'paul': [28, 59, 'fail'], 'saul': [59, 85, 'pass'], 'steve': [22, 55, 'fail'], 'chimpy': [5, 60, 'pass']}

答案 2 :(得分:1)

n = ["paul", "saul", "steve", "chimpy"]
n2 = [28, 59, 22, 5]
n3 = [59, 85, 55, 60]
d={}
for i in zip(*(n, n2, n3)):
    if i[2] >=60:
        d[i[0]] = [i[1], i[2], "Pass"]
    else:
        d[i[0]] = [i[1], i[2], "Fail"]
print d

<强>输出:

{'steve': [22, 55, 'Fail'], 'paul': [28, 59, 'Fail'], 'chimpy': [5, 60, 'Pass'], 'saul': [59, 85, 'Pass']}

答案 3 :(得分:1)

你的功能方法

name_list, age_list, score_list = ["paul", "saul", "steve", "chimpy"], [28,     
59, 22, 5], [59, 85, 55, 60]
score_list = list(zip(name_list, age_list, score_list))

def construct_dictionary_from_lists(scores_list):
    dict_result = {}
    for item in score_list:
        result = "pass" if item[2] > 60 else "fail"
        dict_result[item[0]] = [item[1], item[2], result]

    return dict_result

construct_dictionary_from_lists(score_dict)

答案 4 :(得分:-1)

如果所有列表的大小相同,则可以使用zip创建字典:

 for name,age,score in zip(name_list,age_list,score_list):
      Add in the dictionary