Как лучше всего создать необходимое количество словарей на основе количества списков, в которых значение соответствует заданному значению? А как мне указать интуитивное название словарям?
Я допустил (ладья ie) ошибку. Я жестко запрограммировал предопределенный набор словарей, игнорируя возможные будущие случаи.
Мой фрагмент:
primarytuesday = {}
secondarytuesday = {}
primarythursday = {}
secondarythursday = {}
coaches = [["4/27/1976", "Person One", "Site 1"], ["4/27/1976", "Person Two", "Site 1"],
["4/29/1976", "Person Three", "Site 1"], ["4/29/1976", "Person Four", "Site 1"]]
def sort_coaches(date, primary, secondary):
for eachsession in coaches:
if eachsession[0] == date:
if eachsession[2] in primary:
secondary[eachsession[2]] = eachsession[1]
else:
primary[eachsession[2]] = eachsession[1]
sort_coaches("4/27/1976", primarytuesday, secondarytuesday)
sort_coaches("4/29/1976", primarythursday, secondarythursday)
Вывод (работает по назначению) :
primarytuesday == {'Site 1': 'Person One'}
secondarytuesday == {'Site 1': 'Person Two'}
primarythursday == {'Site 1': 'Person Three'}
secondarythursday == {'Site 1': 'Person Four'}
Проблема: Проблема возникает, если третье значение для определенного дня добавляется в список, как в ...
coaches = [["4/27/1976", "Person One", "Site 1"], ["4/27/1976", "Person Two", "Site 1"], ["4/27/1976", "Person Three", "Site 1"]
["4/29/1976", "Person Four", "Site 1"], ["4/29/1976", "Person Five", "Site 1"]]
Выходные данные изменяют значение во вторник на третье лицо и получают полностью избавиться от второго человека. Имеет смысл, но не то, что предназначено.
Моя первая мысль - выбросить весь код и создать вложенную функцию для каждого списка в списке. Это, вероятно, потребует некоторого использования zip, но я не совсем уверен.
В стороне: я уверен, что есть более эффективные способы, чем перебирать весь список и сравнивать eachsession[0]
с date в пределах l oop, но пусть это будет примером того, где я нахожусь как кодировщик.