需要一些 python 字典的指导,如果可以的话请帮忙..
我有一本字典,看起来像(它有大约 100 个名字,但我给你看的是一个样本):
{'John':{'Maths':40,
'Eng':50,
'Phy':67,
'Chem':78}
'Kate':{'Maths':98,
'Chem':83}
'Julia':{'Phy':76,
'Eng':67,
'Maths':56,
'Bio':78}
'Sam':{'Phy':23,
'Eng':67,
'Chem':98,
'Maths':56}}
我想要的是制作一个两列(或有两个数组)的表格,其中包含学生的姓名和他们各自的英文分数,前提是他们没有任何分数个人简介。(即 Julia 的名字不应出现在列表中)。
是否可以在 python 中优雅地执行此操作? :-/
最佳答案
一个简单的 for
循环和一些字符串格式就可以了 ( since we already have a list comprehension ):
data = {'John': {'Maths': 40, 'Eng':50, 'Phy': 67, 'Chem': 78},
'Kate': {'Maths': 98, 'Chem': 83},
'Julia': {'Phy': 76, 'Eng': 67, 'Maths': 56, 'Bio': 78},
'Sam': {'Phy': 23, 'Eng': 67, 'Chem': 98, 'Maths': 56}}
print "name\tmark\n------------"
for name, marks in data.iteritems():
if not 'Bio' in marks:
print "{name}\t{mark}".format(name=name, mark=marks.get('Eng', '---'))
输出:
name mark
------------
Sam 67
John 50
Kate ---
回应您的评论:
使用zip
-函数:
zip(*[(k,v['Eng']) for k,v in data.iteritems() if not 'Bio' in v and 'Eng' in v])
结果
[('Sam', 'John'), (67, 50)]
关于python - 从python中的字典中制作所选项目的数组/列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18917254/