Python:将用户定义的数据动态插入到二维列表中

Python:将用户定义的数据动态插入到二维列表中,python,list,multidimensional-array,Python,List,Multidimensional Array,我正在尝试为供应商的每周销售额创建一个表,如下所示: Monday Tuesday Wednesday 50 80 10 54 98 7 29 40 80 我正在尝试让用户插入每日销售额,以下是我目前的情况: weekly_sales_list = [['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday',

我正在尝试为供应商的每周销售额创建一个表,如下所示:

Monday    Tuesday    Wednesday    
50        80         10
54        98         7
29        40         80
我正在尝试让用户插入每日销售额,以下是我目前的情况:

weekly_sales_list = [['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday', []]]

    for i in range(len(weekly_sales_list)):
        for j in range(len(weekly_sales_list[i])):
            weekly_sales_list[i][j] = input('input value for ' + weekly_sales_list[i][j])
    print(weekly_sales_list)
我不确定这是否是设置二维列表的最佳方法,我还收到以下错误:

TypeError: can only concatenate str (not "list") to str

任何帮助都将不胜感激

请使用字典,以周名称为键,以周数据为值

import itertools
data = {'Monday':[],
        'Tuesday':[],
        'Wednesday':[],
        'Thursday':[],
        'Friday':[],
        'Saturday':[],
        'Sunday':[]}
while 1:
    info = input('Enter day and value (e.g. "Monday 26") or nothing to stop: ')
    if not info:
        break
    k,v = info.split()
    data[k].append(v)
然后通过显示标题打印表格:

print(*(f'{day:<10}' for day in data))
样本输入:

Enter day and value (e.g. "Monday 26") or nothing to stop: Monday 3
Enter day and value (e.g. "Monday 26") or nothing to stop: Monday 4
Enter day and value (e.g. "Monday 26") or nothing to stop: Monday 5
Enter day and value (e.g. "Monday 26") or nothing to stop: Tuesday 6
Enter day and value (e.g. "Monday 26") or nothing to stop: Tuesday 7
Enter day and value (e.g. "Monday 26") or nothing to stop: Wednesday 8
Enter day and value (e.g. "Monday 26") or nothing to stop: Thursday 9
Enter day and value (e.g. "Monday 26") or nothing to stop:
样本结果:

Monday     Tuesday    Wednesday  Thursday   Friday     Saturday   Sunday
3          6          8          9
4          7
5

使用问题中的列表,稍微改变结构:

weekly_sales_list = [['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'],[]]
定义一种从用户处收集数据的方法(
从模拟的随机导入randint
):

循环询问用户输入:

for n in range(3):
  # print('week - ' + str(n) )
  ask_for_input(n)
准备数据和表格以便打印:

tot_per_day = [sum(col) for col in zip(*weekly_sales_list[1])]
tot_per_day = tot_per_day + [sum(tot_per_day)]
headers = weekly_sales_list[0] + ['total']
row_format ="{:>12}"*9
然后打印:

print (row_format.format("", *headers))
for row in weekly_sales_list[1]:
  print (row_format.format("", *(row + [sum(row)])))
print ("-"*12*9)
print (row_format.format("", *tot_per_day))
这是一个随机结果:

# Monday     Tuesday   Wednesday    Thursday      Friday    Saturday      Sunday       total
#      0           1           1           0           2           0           1           5
#      1           2           0           2           0           0           1           6
#      1           2           0           0           1           0           2           6
# ------------------------------------------------------------------------------------------
#      2           5           1           2           3           0           4          17

每周销售的目的是什么?代码的其余部分从不使用它。它使用
每周销售清单
,你应该把它放在问题中。我认为你想
每周销售清单中的日销售
,你不应该使用
范围(len(str(…))
你发布的代码中似乎有缩进错误。这是最小的问题,这可能只是一个复制错误。
print (row_format.format("", *headers))
for row in weekly_sales_list[1]:
  print (row_format.format("", *(row + [sum(row)])))
print ("-"*12*9)
print (row_format.format("", *tot_per_day))
# Monday     Tuesday   Wednesday    Thursday      Friday    Saturday      Sunday       total
#      0           1           1           0           2           0           1           5
#      1           2           0           2           0           0           1           6
#      1           2           0           0           1           0           2           6
# ------------------------------------------------------------------------------------------
#      2           5           1           2           3           0           4          17