这是我的csv文件(import_inventory.csv)内容:
ruby , rope , ruby , gold coin , ruby , axe
纯文本。 CSV文件与我的脚本位于同一文件夹中。
我要打开它,然后将其添加到我的“ inv”字典中:
inv = {'rope': 1, 'torch': 6, 'gold coin': 42, 'dagger': 1}
我必须使用该函数作为默认函数并对其进行定义(这是我的练习):
def import_inventory(inventory, filename="import_inventory.csv"):
接下来,我需要像这样打印它:
Inventory:
count item name
----------------
45 gold coin
12 arrow
6 torch
2 dagger
1 rope
1 ruby
----------------
Total number of items: 67
我有一个名为“ print_table”的函数,该函数对我来说就是这样。这只是为了让您知道,目前的问题仅在于打开csv文件并将其与现有字典“ inv”合并
先谢谢了。如果有不清楚的地方,请告诉我!
答案 0 :(得分:0)
我认为这应该做您想要的。 如果字典中不存在某一项,则必须创建一个值为1的该项。在其他所有情况下,您只需添加一个即可。
def import_inventory(inventory, filename="import_inventory.csv"):
file = open(filename, 'r')
data = file.readline().split(',')
inv = inventory
for item in data:
item = item.strip()
if item in inv:
inv.update({item: inv[item]+1})
else:
inv.update({item: 1})
return inv
def print_table(inventory):
inv = inventory
count = 0
print('{:>5} {:>15}'.format('count', 'item name'))
print('---------------------')
for item in inv:
print('{:>5} {:>15}'.format(inv[item], item))
count = count + inv[item]
print('---------------------')
print('Total number of items: ' + str(count))
given_inventory = {'sword': 100, 'rope': 4}
new_inventory = import_inventory(given_inventory)
print_table(new_inventory)
答案 1 :(得分:0)
我将以更Python化的方式设计 import_inventory ,并使用上下文管理器与纯文本文件进行交互,并使用defaultdict来计算库存。
from collections import defaultdict
from contextlib import suppress
def import_inventory(inventory, filename):
_inventory = defaultdict(int)
with open(filename, encoding="UTF_8") as stream:
for line in stream:
for item in line.split(","):
stock = inventory.get(item.strip(), 0)
with suppress(KeyError):
del(inventory[item.strip()])
_inventory[item.strip()] += stock + 1
return _inventory
该函数运行三个步骤: