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的答案是一个完美的一行。很高兴我能帮忙:)