【发布时间】:2014-12-10 08:26:04
【问题描述】:
我有这本词典(姓名和年级):
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 |
如何添加字母等级?
【问题讨论】:
-
您的成绩代码并没有完全改变正确的字典。它引用
d1(不是复制它)。然后你改变dw。您还反转了成绩;您的示例输出声明1应该是C但实际上您将A用于1。 -
您声明的输出也与您的实际代码不匹配。
-
您也在对字典
d进行排序,但您的输入字典 被称为d1。您能否至少在您的问题中生成能够正确重现您的问题的代码? -
您的输出示例代码也会引发异常 (
IndexError: tuple index out of range),因为您没有为 3 个格式槽提供 3 个参数。而{:10f}会为d[name]值生成1.000000、2.000000和3.000000。
标签: python python-3.x dictionary