Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将dict的键值对打印为对齐表?_Python_Dictionary_Output - Fatal编程技术网

Python 如何将dict的键值对打印为对齐表?

Python 如何将dict的键值对打印为对齐表?,python,dictionary,output,Python,Dictionary,Output,我想打印如下内容: 数学90 计算机科学100 化学90 等等,但它是这样印刷的 数学90 计算机科学100 化学90 物理学97 英语95 我想在适当的行中打印标记和主题。试试这个: Student_Name = {"Mathematics": 90, "Computer Science": 100, "Chemistry": 90, "Physics": 97,

我想打印如下内容:

数学90
计算机科学100
化学90
等等,但它是这样印刷的

数学90
计算机科学100
化学90
物理学97
英语95
我想在适当的行中打印标记和主题。

试试这个:

Student_Name = {"Mathematics": 90, 
                "Computer Science": 100, 
                "Chemistry": 90, 
                "Physics": 97, 
                "English": 95}
for key,value in Student_Name.items():
    print(key,value)
从Python3.6开始,您也可以使用它。(乔恩·克莱门茨提供)

如需更多参考资料,请访问以下网站:

Student_Name = {"Mathematics": 90, 
                "Computer Science": 100, 
                "Chemistry": 90, 
                "Physics": 97, 
                "English": 95}
for key,value in Student_Name.items():
    print(key,value)
从Python3.6开始,您也可以使用它。(乔恩·克莱门茨提供)


有关其他参考资料,请访问

您有许多选择:

使用原始代码,您只需按tab键单击下一项:

for key,value in Student_Name.items():
    print(f'{key:20}{value}')
虽然这不是完美的,因为它是一个标签,除非所有的键都是相似的长度,否则它看起来不会像你想要的那样

输出:

for key, value in Student_Name.items():
    print(key,'\t',value)
更好的解决办法可能是:

Mathematics      90
Computer Science         100
Chemistry        90
Physics          97
English          95
输出:

for key, value in Student_Name.items():
    print(f'{key:20}{value}')
需要Python 3.6

我唯一想问你们的问题是为什么,你们想这样做,最好打印一些文件,使用分隔符,然后担心以后的演示。无论哪种方式,您都应该能够处理上述问题

这里的第一个答案同样合适

Mathematics         90
Computer Science    100
Chemistry           90
Physics             97
English             95
这与f'相同,但都有一个问题,即如果主题
比其他键长得多,则需要修改外观。将key
{key:20}
{0:20}
更改为一个更大的数字会有所帮助,但也许您可以使用最长值作为此处的值加上5作为填充值来计数检查键的长度

例如,您可以这样做(为了便于说明,添加了一个额外的键:

for key,value in Student_Name.items():
...     print("{0:20}{1:5d}".format(key,value))
输出:

 Student_Name = {"Mathematics": 90, "Computer Science": 100, "Chemistry": 90, "Physics": 97, "English": 95, "REALLY LONG SUBJECT ABOUT POLITICS": 10}
 # Get the longest subject name
 length = max(len(x) for x in Student_Name)
 # decide on padding
 padding = 5

 #use these two value to working out the exact space required
 space = length + padding

 #format and print the statement
 for key, value in Student_Name.items():
 ...     subject = "{0:{space}}".format(key, space=space)
 ...     result = "{0:5d}".format(value)
 ...     print(subject + result)

将始终使结果与最长的主题名称保持适当的距离。

您有许多选项:

使用原始代码,您只需按tab键单击下一项:

for key,value in Student_Name.items():
    print(f'{key:20}{value}')
虽然这不是完美的,因为它是一个标签,除非所有的键都是相似的长度,否则它看起来不会像你想要的那样

输出:

for key, value in Student_Name.items():
    print(key,'\t',value)
更好的解决办法可能是:

Mathematics      90
Computer Science         100
Chemistry        90
Physics          97
English          95
输出:

for key, value in Student_Name.items():
    print(f'{key:20}{value}')
需要Python 3.6

我唯一想问你们的问题是为什么,你们想这样做,最好打印一些文件,使用分隔符,然后担心以后的演示。无论哪种方式,你们都应该能够处理上面提到的问题

这里的第一个答案同样合适

Mathematics         90
Computer Science    100
Chemistry           90
Physics             97
English             95
它的输出与f'相同,但两者都有一个问题,即如果主题
比其他主题长得多,则需要修改外观。更改键
{key:20}
{0:20}
增加一个数字会有所帮助,但也许您可以使用“最长”作为此处的值加上5作为填充来计算并检查关键点的长度

例如,您可以这样做(为了便于说明,添加了一个额外的键:

for key,value in Student_Name.items():
...     print("{0:20}{1:5d}".format(key,value))
输出:

 Student_Name = {"Mathematics": 90, "Computer Science": 100, "Chemistry": 90, "Physics": 97, "English": 95, "REALLY LONG SUBJECT ABOUT POLITICS": 10}
 # Get the longest subject name
 length = max(len(x) for x in Student_Name)
 # decide on padding
 padding = 5

 #use these two value to working out the exact space required
 space = length + padding

 #format and print the statement
 for key, value in Student_Name.items():
 ...     subject = "{0:{space}}".format(key, space=space)
 ...     result = "{0:5d}".format(value)
 ...     print(subject + result)

将始终使结果与最长的主题名称保持正确的距离。

为了避免像其他答案一样硬编码第一列的宽度,您可以提前计算最大键长度

简单的例子:

Mathematics                           90
Computer Science                     100
Chemistry                             90
Physics                               97
English                               95
REALLY LONG SUBJECT ABOUT POLITICS    10
将打印:

数学90
计算机科学100
化学90
物理学97
英语95
我们可以通过将代码包装到函数中并添加分隔符参数来进一步改进代码:

grades = {"Mathematics": 90, 
          "Computer Science": 100, 
          "Chemistry": 90, 
          "Physics": 97, 
          "English": 95}
max_key_len = max(map(len, grades.keys()))
format_string = '{{key:{}}}  {{value}}'.format(max_key_len)
for key, value in grades.items():
    print(format_string.format(key=key, value=value))
然后像这样使用它:

from typing import Dict, Iterator


def to_aligned_records(dict_: Dict,
                       *,
                       sep: str = ' ') -> Iterator[str]:
    """Yields key-value pairs as strings that will be aligned when printed"""
    max_key_len = max(map(len, dict_.keys()))
    format_string = '{{key:{max_len}}}{sep}{{value}}'.format(max_len=max_key_len, sep=sep)
    for key, value in dict_.items():
        yield format_string.format(key=key, value=value)

为了避免像在其他答案中一样硬编码第一列的宽度,您可以提前计算最大键长度

简单的例子:

Mathematics                           90
Computer Science                     100
Chemistry                             90
Physics                               97
English                               95
REALLY LONG SUBJECT ABOUT POLITICS    10
将打印:

数学90
计算机科学100
化学90
物理学97
英语95
我们可以通过将代码包装到函数中并添加分隔符参数来进一步改进代码:

grades = {"Mathematics": 90, 
          "Computer Science": 100, 
          "Chemistry": 90, 
          "Physics": 97, 
          "English": 95}
max_key_len = max(map(len, grades.keys()))
format_string = '{{key:{}}}  {{value}}'.format(max_key_len)
for key, value in grades.items():
    print(format_string.format(key=key, value=value))
然后像这样使用它:

from typing import Dict, Iterator


def to_aligned_records(dict_: Dict,
                       *,
                       sep: str = ' ') -> Iterator[str]:
    """Yields key-value pairs as strings that will be aligned when printed"""
    max_key_len = max(map(len, dict_.keys()))
    format_string = '{{key:{max_len}}}{sep}{{value}}'.format(max_len=max_key_len, sep=sep)
    for key, value in dict_.items():
        yield format_string.format(key=key, value=value)

您还可以执行最长的主题名称长度,如so
length=max(map(len,Student\u name))
。map函数对于iterable中所有元素的操作非常有用。您还可以执行最长的主题名称长度,如so
length=max(map(len,Student\u name))
.Map函数对于iterable中所有元素的操作非常有用。