2016-06-28 88 views
0

爲什麼打印與印刷的字典

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

輸出A B而不是10 20

,我如何得到10 20

+0

,打印不字典值 – SAMO

+3

需要注意的是''是** **位置拆箱鍵。當你遍歷一個字典時,你會得到鍵,而不是值,因此結果。使用'* d。值()'而不是。順便說一句:輸出的順序沒有定義,所以如果這些值的結果與您想象的順序不同,請不要感到驚訝。 – Bakuriu

+0

[在python中使用dict值獲取字典鍵值的可能重複](http://stackoverflow.com/questions/8251876/getting-dict-key-using-dict-value-in-python) – SAMO

回答

2

簡單地寫

print (*d.values()) 
3

假設你想要的是與價值打印鍵一起你可以使用一個生成器表達式:

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=' ') 

都與輸出:

A=10 B=20 
+0

問題說:「我如何獲得'10 20'?」他似乎並不想要鑰匙。 – Barmar

+0

@Barmar我同意,但標題相當開放(*打印字典*),並可能導致其他用戶在此頁面中陷入困境,尋找打印鍵和值的方式。 –

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. **語法要求的字典;字典中的每個鍵值對都成爲關鍵字參數。

打印(*對象,九月=」」,端= '\ n',文件= sys.stdout的,齊平=假)

打印對象文本流文件,由分離sep然後結束。九月,結束和文件,如果存在的話,必須作爲關鍵字參數。

所有非關鍵字參數都會轉換爲字符串,如str()並將其寫入流中,並由sep和end結尾。 sep和end都必須是字符串;它們也可以是None,這意味着使用默認值。如果沒有給出對象,print()將只寫結束。

file參數必須是一個帶有write(string)方法的對象;如果它不存在或無,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=" ")