def main():
salesData= readData('icecream.txt')
print(salesData)
#printReport(salesData)
# Reads the tabular data
# @param filename name of the input file
# @return a dictionary whose keys are ice cream flavors and whose values are sales data.
def readData(filename):
# Create an empty dictionary.
salesData={}
infile=open(filename, "r")
# Read each record from the file.
for line in infile:
fields=line.split(":") # what is field datatype
flavor=fields[0]
salesData[flavor]=buildList(fields)
#print("SalesData", salesData)
#print()
#print()
infile.close()
return salesData
# Builds a list of store sales contained in the fields split from a string.
# @param fields a list of strings comprising the record fields
# @return a list of floating-point values
def buildList(fields):
storeSales= []
for i in range (1, len(fields)):
sales=float(fields[i])
storeSales.append(sales)
#print('StoreSales', storeSales)
#print()
return storeSales
# Prints a sales report.
def printReport(salesData):
numStores=0
#print the dictionary first without the totals?
#call print report
main()
При запуске программы в ее нынешнем состоянии, это даст мне следующий вывод:Как печатать ключи и значения из словаря с конкретными требованиями
{'chocolate': [10225.25, 9025.0, 9505.0], 'strawberry': [9285.15, 8276.1, 8705.0], 'cookie dough': [7901.25, 4267.0, 7056.5], 'rocky road': [6700.1, 5012.45, 6011.0], 'vanilla': [8580.0, 7201.25, 8900.0]}
Однако, мне нужно, чтобы выглядеть это:
chocolate 10225.25 9025.0 9505.0 Total: 28755.25
vanilla 8580.0 7201.25 8900.0 Total: 24681.25
rocky road 6700.1 5012.45 6011.0 Total: 17723.55
strawberry 9285.15 8276.1 8705.0 Total: 26266.25
cookie dough 7901.25 4267.0 7056.5 Total: 19224.75
**42691.75 33781.8 40177.5**
Чистый, организованный, с вкладками, идеальное выравнивание. Я не знаю, как извлечь данные из словаря в чистом виде. Кроме того, я должен добавить итоги для шоколада и т. Д., А также 1, 2 и 3 столбцы. Презентация важна. Это не просто «как мне выводить данные», но «как я могу выводить данные с чистой презентацией». Я думал об использовании вложенных циклов или, возможно, что-то с циклом for. Но где это для цикла, или как я использую его для распечатки данных словаря, как я хочу, чтобы это выглядело, вне меня. Я просмотрел другие вопросы, но ничто не приближается к этому уровню табулирования, организации и печати для данных, поступающих из словаря. Я также попытался часто цитировать «для ключа, val в X.items():« но это не сработало для меня. Я даже не знаю, с чего начать с этой функции, и ее запутывание вне веры. Где бы я это сказал? Как бы это назвать? Куда я пойду оттуда? Не говоря уже о том, что у меня есть столбцы для добавления, а также строки для добавления. Это очень конкретный вопрос. Спасибо.
Я понятия не имею, что там происходит ... –
Ответ peter не касается добавления столбца ... также, ваш код был отличным и отлично работал, он просто не добавлял столбцы. Я думал (может быть, вы могли бы помочь мне здесь), инициализировав три столбца (col1, col2 и col3) в 0, а затем + = их для значений [0] [1] и [2], а затем напечатав 'print (" \ t \ t ", col1," \ t ", col2," \ t ", col3)' однако он не работает: он не печатает сумму столбцов. Только один из вкусов. –
Да. Я получал результаты, которые я хотел от вашего предложения, и я успешно провел его без сучка и задоринки; однако в нем отсутствовали только три номера: '42691,75 33781,8 40177,5'. То есть я до сих пор не знаю, как суммировать значения [0] от каждого ключа до одного числа, которое выводится ниже соответствующего столбца (повторить для значений [1] и [2]). –