我有这本词典(姓名和成绩):
d1 = {'a': 1, 'b': 2, 'c': 3}
我必须像这样打印:
|a | 1 | C |
|b | 2 | B |
|c | 3 | A |
我创建了一个新词典,根据这些条件找出字母评分:
d2 = {}
d2 = d1
for (key, i) in d2.items():
if i = 1:
d2[key] = 'A'
elif i = 2:
d2[key] = 'B'
elif i = 3:
d2[key] = 'C'
尝试使用以下代码进行打印时:
sorted_d = sorted(d)
format_str = '{:10s} | {:10f} | {:>7.2s} |'
for name in sorted_d:
print(format_str.format(name, d[name]))
打印:
a | 1 |
b | 2 |
c | 3 |
如何添加字母等级?
答案 0 :(得分:0)
您的成绩词典可以创建如下:
grades = {1: 'C', 2: 'B', 3: 'A'} # going by the sample output
{:>7.2f}
会指望浮点数。只需使用s
或离开类型格式化程序,并且不要指定精度。您的字典值是整数,因此我会使用d
格式,而不是f
。您的示例输出似乎也左对齐这些数字,而不是右对齐,因此格式说明符需要'<10d'
。
要包含成绩字母,请以d[name]
为关键字查找成绩:
format_str = '{:10s} | {:<10d} | {:>10s} |'
for name in sorted_d:
print(format_str.format(name, d[name], grades[d[name]]))
演示:
>>> d1 = {'a': 1, 'b': 2, 'c': 3}
>>> grades = {1: 'C', 2: 'B', 3: 'A'} # going by the sample output
>>> sorted_d = sorted(d1)
>>> format_str = '{:10s} | {:<10d} | {:>10s} |'
>>> for name in sorted_d:
... print(format_str.format(name, d1[name], grades[d1[name]]))
...
a | 1 | C |
b | 2 | B |
c | 3 | A |