有没有办法配对字典项?

时间:2013-02-22 08:54:18

标签: python dictionary

我想要做的是能够通过我的字典并成对地一次打印两个值,而不会加倍。 如果我有:

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

我希望它能够将它分成两对,而不会倍增。 所以我可以得到

  鲍勃和约翰,格雷格和蒂姆或鲍勃和格雷格,约翰和蒂姆。

很抱歉,如果我没有很好地解释这一点,但希望你明白我的意思。

2 个答案:

答案 0 :(得分: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())

获取按字母顺序排列的玩家列表。否则订单将是任意的。

仅适用于偶数玩家。

答案 1 :(得分: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')