为什么
d = {"A":10,"B":20}
print(*d, sep=" ")
输出A B
而非10 20
?
我如何获得10 20
?
答案 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'}
*
语法需要元组/列表;
**
语法需要字典;字典中的每个键值对都成为关键字参数。
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=" ")