2013-02-22 47 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') 
相关问题