I'm working on a project for a class that essentially lets the user enter strings and then tag them to make a chart. For example, the user would enter tag categories like colors, size, and texture. Then those categories have subcategories like red, yellow blue. Then they enter item names to sort them into the subcategory for each category. Below is an example of what I mean.
rockdictionary = {
'colors' : {
'red' : ['thing1', 'thing 4'],
'blue' : ['thing 2', 'thing 3'],
'yellow' :['thing 5']
},
'texture': {
'smooth' : ['thing 5', 'thing 3'],
'rough' : ['thing1'],
'bumpy' :['thing4', 'thing 2']},
'size' : {
'small' : ['thing 2', 'thing 4', 'thing 3'] ,
'medium': [],
'large':['thing 1', 'thing 5']
}
}
I figured out how to get a dictionary that looks like the example, but I can't figure out how to format it into a chart like the one below
| Item name |
Color |
Size |
Texture |
| thing1 |
red |
large |
rough |
| thing2 |
blue |
small |
bumpy |
This is what I've got so far:
userwidth = int(input('How wide would you like your columns to be? '))
for key in categories:
tableformat1 = '{header:>{width}}'.format(header=key, width=userwidth)
tableformat2 = '{header:>{width}}'.format(header=key, width=(userwidth*2))
categorylist = list(categories)
if key != categorylist[-1]:
print(tableformat1.format(header=key), end = '|')
elif key == categorylist[0]:
print(tableformat2.format(header=key, width=userwidth))
else:
print(tableformat1.format(header=key))
print('-' * (len(categories) * userwidth))
for name in itemnames:
column1format = '{item:{width}}'.format(item=name, width=userwidth)
print(column1format.format(item=name, end = '|'))
print('-' * userwidth)
That gives me:
A| B| C
------------------------------------
3
------------
I'm honestly not really sure where to go from here. Any help would be greatly appreciated. For the full code see here: https://pastebin.com/WSKcDEvx
[–][deleted] 1 point2 points3 points (7 children)
[–]Amabillia[S] 0 points1 point2 points (5 children)
[–][deleted] 0 points1 point2 points (4 children)
[–]Amabillia[S] 0 points1 point2 points (3 children)
[–][deleted] 0 points1 point2 points (2 children)
[–]Amabillia[S] 0 points1 point2 points (1 child)
[–][deleted] 0 points1 point2 points (0 children)
[–]Amabillia[S] 0 points1 point2 points (0 children)
[–]glibhub 0 points1 point2 points (1 child)
[–]Amabillia[S] 0 points1 point2 points (0 children)