2013-02-22 66 views
3

我想要做的就是能夠通過我的字典並且一次打印出兩個值,而不是雙倍增加。 所以,如果我有:有沒有辦法配對字典項目?

dict = {'player1':'Bob' , 'player2':'John', 'player3':'Greg', 'player4':'Tim'} 

我希望它能夠把它分成對二無增加了一倍。 所以我可以得到

鮑勃和約翰,格雷格和蒂姆鮑勃和格雷格,約翰和蒂姆。

對不起,如果我沒有解釋得很好,但希望你明白我的意思。

回答

4
d = {'player1':'Bob' , 'player2':'John', 'player3':'Greg', 'player4':'Tim'} 

players = list(d.values()) 
print(', '.join('{} and {}'.format(players[i], players[i+1]) for i in range(0, len(players), 2))) 

打印(例如):

John and Greg, Bob and Tim 

您可以

players = sorted(d.values()) 

更換第二行獲得的選手按字母順序排序列表。否則,訂單將是任意的。

僅適用於偶數玩家。

+0

它說.join之前的','是一個語法錯誤? – OhFiddleDiddle 2013-02-22 09:11:09

+0

@ user2098639 - 嘗試將'print'作爲函數調用(請參閱我編輯的答案)。 – eumiro 2013-02-22 09:35:19

2
>>> import random 
>>> D = {'player1':'Bob' , 'player2':'John', 'player3':'Greg', 'player4':'Tim'} 
>>> players = D.values() 
>>> random.shuffle(players) # I'm guessing you don't want fixed pairs 
>>> for i in zip(*[iter(players)]*2): 
... print i 
... 
('Bob', 'Tim') 
('Greg', 'John') 
相關問題