用打印打印字典

时间:2016-06-28 16:09:56

标签: python python-3.x

为什么

 d = {"A":10,"B":20}
 print(*d, sep=" ")

输出A B而非10 20

我如何获得10 20

3 个答案:

答案 0 :(得分:3)

假设您想要的是将一起打印,您可以使用生成器表达式:

argmax

或者如果您希望保留print(' '.join('{}={}'.format(k,v) for k,v in d.items())) 参数而不是使用sep

str.join

两者都有输出:

print(*('{}={}'.format(k,v) for k,v in d.items()),sep=' ')

答案 1 :(得分:2)

简单地写

答案 2 :(得分:1)

请参阅打印介绍的演示:

>>> def demo(p, *args, **kwargs):
...     print(args)
...     print(kwargs)
...
>>> demo(0, 1, 2, 3, 4, callback='demo_callback')
(1, 2, 3, 4)
{'callback': 'demo_callback'}
  1. *语法需要元组/列表;

  2. **语法需要字典;字典中的每个键值对都成为关键字参数。

  3.   

    print(* objects,sep ='',end ='\ n',file = sys.stdout,flush = False)

         

    将对象打印到文本流文件,以sep分隔,然后结束。 sep,end和file(如果存在)必须作为关键字参数给出。

         

    所有非关键字参数都转换为字符串,如str(),并写入流,由sep分隔,后跟end。 sep和end都必须是字符串;它们也可以是None,这意味着使用默认值。如果没有给出对象,print()将只写入结束。

         

    file参数必须是带有write(string)方法的对象;如果它不存在或None,将使用sys.stdout。由于打印的参数转换为文本字符串,因此print()不能与二进制模式文件对象一起使用。对于这些,请改用file.write(...)。

         

    输出是否缓冲通常由文件确定,但如果flush关键字参数为true,则强制刷新流。

    >>> print(d, sep=" ")
    {'B': 20, 'A': 10}
    >>> print(*d, sep=" ")
    B A
    >>> print(**d, sep=" ")
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: 'B' is an invalid keyword argument for this function
    

    这是一种有效的方式:

    >>> print(*d.values(), sep=" ")