我需要动态创建一个dicts的dict,然后将它们打印在终端的整洁表中。最终,我将添加到每个字典并重新打印表格。
到目前为止,这是我的代码:
def handy(self, play_deck):
a = raw_input('How many hands? ')
for i in range(int(a)):
h = "hand" + str(i+ 1) # dynamilly create key
q, play_deck = self.deal(self.full_deck) # pull cards from deck
self.dict_of_hands.setdefault(h, q) # load up dict of hands
hand_keys = self.dict_of_hands.keys()
the_hands = self.dict_of_hands
print "\n"
for hand in hand_keys:
for card in range(len(the_hands[hand].keys())):
print hand
print the_hands[hand][card]
我的输出是这样的:
How many hands? 4
hand4
6 of Clubs
hand4
4 of Diamonds
hand1
8 of Diamonds
hand1
10 of Hearts
hand2
10 of Hearts
hand2
5 of Clubs
hand3
9 of Diamonds
hand3
3 of Hearts
我想:
hand1 hand2 hand3 hand4
2 of hearts 8 of spades ace of clubs jack of diomonds
5 of diamonds ... ... ...etc.
我在SO上看到的示例基于已知数量的列。这需要是动态的。
答案 0 :(得分:1)
要转换为行列表,请使用zip
:
header = dict_of_hands.keys()
rows = zip(*dict_of_hands.items())
import texttable
table = texttable.Texttable()
table.header(header)
table.add_rows(rows, header=False)
print table.draw()
答案 1 :(得分:1)
行。拿@ecatmur提供的内容,我现在有以下内容,现在似乎有效。
def handy(self, play_deck):
a = raw_input('How many hands? ')
for i in range(int(a)):
h = "hand" + str(i+ 1) # dynamilly create key
q, play_deck = self.deal(self.full_deck) # pull cards from deck
self.dict_of_hands.setdefault(h, q) # load up dict of hands
hand_keys = self.dict_of_hands.keys()
the_hands = self.dict_of_hands
first_cards = []
second_cards = []
for hand in the_hands:
# print the_hands[hand][0]
first_cards.append(the_hands[hand][0])
for hand in the_hands:
# print the_hands[hand][1]
second_cards.append(the_hands[hand][1])
header = self.dict_of_hands.keys()
table = texttable.Texttable()
table.header(header)
table.add_rows([first_cards, second_cards], header=False)
print table.draw()
和输出是:
How many hands? 4
+---------------+---------------+------------------+---------------+
| hand4 | hand1 | hand2 | hand3 |
+===============+===============+==================+===============+
| Jack of Clubs | 9 of Diamonds | Jack of Diamonds | 4 of Spades |
+---------------+---------------+------------------+---------------+
| 6 of Diamonds | 10 of Spades | 9 of Diamonds | Ace of Hearts |
+---------------+---------------+------------------+---------------+
拼图的最后一部分将使以下线动态化:
table.add_rows([first_cards, second_cards], header=False)
最终,我需要每只手都有不同的长度。
答案 2 :(得分:0)