Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python (键:值)按字典格式输入键,按列表格式输入值_Python_List_Python 3.x_Dictionary - Fatal编程技术网

Python (键:值)按字典格式输入键,按列表格式输入值

Python (键:值)按字典格式输入键,按列表格式输入值,python,list,python-3.x,dictionary,Python,List,Python 3.x,Dictionary,我想得到这样的东西: {'eve': [19, 50, 'fail'], 'walle': [79, 65, 'pass'], 'sandy': [28, 49, 'fail'],'bob': [15, 60, 'pass']} 我试图做到的是: def try_dic_from_list(names, ages, scores): for s in scores: p= "pass" if s >=60 else "fail" mydict={key:v

我想得到这样的东西:

{'eve': [19, 50, 'fail'], 'walle': [79, 65, 'pass'], 'sandy': [28, 49, 'fail'],'bob': [15, 60, 'pass']}
我试图做到的是:

def try_dic_from_list(names, ages, scores):
    for s in scores:
        p= "pass" if s >=60 else "fail"
    mydict={key:value for key,value in list(zip(names,zip(ages,scores,str(p))))}
    print(mydict)
print(try_dic_from_list(["walle", "sandy", "eve", "bob"], [79, 28, 19, 15],
                                      [65, 49, 50, 60]))
这将输出以下内容:

{'walle': (79, 65, 'p'), 'sandy': (28, 49, 'a'), 'eve': (19, 50, 's'), 'bob': (15, 60, 's')}

任何关于使用方括号而不是圆括号的建议,以及如何获得列表中通过或失败的字符串。多谢各位

您正在使用其他值压缩最后一个
pass
fail
字符串,因此它被视为要压缩的字符序列

先压缩,然后包括
通过
失败

def try_dic_from_list(names, ages, scores):
    return {name: [age, score, 'pass' if score >= 60 else 'fail']
            for name, age, score in zip(names, ages, scores)}
演示:


您正在使用其他值压缩最后一个
pass
fail
字符串,因此它被视为要压缩的字符序列

先压缩,然后包括
通过
失败

def try_dic_from_list(names, ages, scores):
    return {name: [age, score, 'pass' if score >= 60 else 'fail']
            for name, age, score in zip(names, ages, scores)}
演示:


在一行中说出您需要做的事情,这将给出:

def try_dic_from_list(names, ages, scores):
    return {name: [age, score, "pass" if score >= 60 else "fail"] for name, age, score in zip(names, ages, scores)}

print(try_dic_from_list(["walle", "sandy", "eve", "bob"], [79, 28, 19, 15],
                                      [65, 49, 50, 60]))

# {'bob': [15, 60, 'pass'], 'walle': [79, 65, 'pass'], 'eve': [19, 50, 'fail'], 'sandy': [28, 49, 'fail']}

在一行中说出您需要做的事情,这将给出:

def try_dic_from_list(names, ages, scores):
    return {name: [age, score, "pass" if score >= 60 else "fail"] for name, age, score in zip(names, ages, scores)}

print(try_dic_from_list(["walle", "sandy", "eve", "bob"], [79, 28, 19, 15],
                                      [65, 49, 50, 60]))

# {'bob': [15, 60, 'pass'], 'walle': [79, 65, 'pass'], 'eve': [19, 50, 'fail'], 'sandy': [28, 49, 'fail']}

函数内部的缩进似乎是最大的问题,特别是它在分数上循环,并且在最后只为
p
设置一个最终值。你需要某种方法来存储每个分数的通过和失败,而不仅仅是最后一个

mydict的
mydict
行也非常混乱,我很难从中获益(三个月后阅读本文的另一位开发人员和您自己也是如此)

我重写了它,使它工作起来,看起来更正常:

def try_dic_from_list(names, ages, scores):
    pees = []
    for s in scores:
        p= "pass" if s >=60 else "fail"
        pees.append(p)

    values = [list(x) for x in zip(ages, scores, pees)]
    final_zip = zip(names, values)

    dict = {key:value for key,value in final_zip}
    return dict

如果您关心性能,当然可以减少理解的次数,但这至少更易于阅读和调试。

函数内部的缩进似乎是最大的问题,特别是它在分数上循环,并且在最后只为
p
设置最终值。你需要某种方法来存储每个分数的通过和失败,而不仅仅是最后一个

mydict的
mydict
行也非常混乱,我很难从中获益(三个月后阅读本文的另一位开发人员和您自己也是如此)

我重写了它,使它工作起来,看起来更正常:

def try_dic_from_list(names, ages, scores):
    pees = []
    for s in scores:
        p= "pass" if s >=60 else "fail"
        pees.append(p)

    values = [list(x) for x in zip(ages, scores, pees)]
    final_zip = zip(names, values)

    dict = {key:value for key,value in final_zip}
    return dict

如果您关心性能,当然可以减少理解的次数,但这至少更易于阅读和调试。

非常感谢您的回答并指出错误:)很高兴能提供帮助!对不起,您只能将一个答案标记为已接受;挑一个你觉得对你帮助最大的!(也可以不选一个)。事实上,两个答案是相似的。所以,我只想两者都选。我真的很抱歉,这不是So提供的选项。您可以选择其中一个,也可以不选择。:-)非常感谢您的回答并指出错误:)很高兴能提供帮助!对不起,您只能将一个答案标记为已接受;挑一个你觉得对你帮助最大的!(也可以不选一个)。事实上,两个答案是相似的。所以,我只想两者都选。我真的很抱歉,这不是So提供的选项。您可以选择其中一个,也可以不选择。:-)非常好,非常好的解决方案非常好,非常好的解决方案我试了一个衬里,看起来可能是这样的。我想练习一句台词。非常感谢。下次我会记住。:)好的,是的,@DainDwarf的答案是一个完美的一行。很高兴我能帮上忙:)我试了一个班轮,所以看起来可能是这样。我想练习一句台词。非常感谢。下次我会记住。:)好的,是的,@DainDwarf的答案是一个完美的一行。很高兴我能帮忙:)