Эй, название вопроса может быть немного запутанным.Итак, в основном я хочу напечатать словарь с ключами и его значениями, поэтому я знаю, что нужно вызывать dictionary.items (), но я хочу, чтобы он распечатывал, используя функцию объекта str вместо печати адреса памяти.
Мой объект игрока
class Player():
def __init__(self, id, name, position):
self.player_id = id
self.name = name
def __str__(self):
return self.name
Итак, у меня есть словарь -
depth_chart = {}
, в который я вставляю объекты игрока в виде списка.
def addPlayer(player, position):
# Function to add player to depth chart.
if position not in depth_chart:
depth_chart[position] = []
depth_chart[position].append(player)
else:
depth_chart[position].append(player)
Так что в конечном итоге у меня может появиться что-то вроде этого -
depth_chart = {
'shooting_guard': [PlayerObject1, PlayerObject2],
'center': [PlayerObject3],
'point_guard': [PlayerObject4]
}
Теперь вот моя проблема, если я вызываю глубину_чарт.items (), я хочу, чтобы он возвращал мне что-то вроде
[('shooting_guard', ['John', 'Joseph'] ), ('center', ['Alex']), ('point_guard': ['Sean'] ]
Но сейчас он просто возвращает мне адрес памяти объектов Player.Есть ли способ вызвать функцию str или другой метод для вывода имен объектов проигрывателя?У меня есть функция, которую я могу сделать, чтобы она выглядела так, как я хочу, но я не уверен, есть ли более простой способ?Как выглядит эта функция -
def getFullDepthChart():
# Function to print out all the positions in the depth chart
all_players = []
for items in depth_chart.items():
temp = []
position = items[0]
player_array = items[1]
for players in player_array:
temp.append(players.name)
all_players.append((position, temp))
return all_players