以特定格式打印字典中的值和键(python)

以特定格式打印字典中的值和键(python),python,python-3.x,dictionary,Python,Python 3.x,Dictionary,我有这本字典(名字和等级): 我必须这样打印: |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

我有这本字典(名字和等级):

我必须这样打印:

|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         |

如何添加字母等级

您的成绩词典可以创建为:

grades = {1: 'C', 2: 'B', 3: 'A'}  # going by the sample output

{:>7.2f}
应为浮点数。只需使用
s
或离开类型格式化程序,不要指定精度。您的字典值是整数,因此我将使用
d
格式,而不是
f
。您的示例输出也显示为左对齐这些数字,而不是右对齐,因此
“您的分数代码并没有完全改变右字典。它引用的是
d1
(不是复制它)。然后更改
dw
。你还颠倒了分数;您的示例输出声明
1
应该是
C
,但实际上您将
A
用于
1
。您声明的输出也与实际代码不匹配。您还在对字典
d
排序,但您的输入字典名为
d1
。请至少在问题中生成能够正确再现问题的代码好吗?输出的示例代码也会引发异常(
索引器:元组索引超出范围
),因为您没有为3个格式插槽提供3个参数。而
{:10f}
将为
d[name]
值生成
1.000000
2.000000
3.000000
grades = {1: 'C', 2: 'B', 3: 'A'}  # going by the sample output
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 |