#python #csv #dictionary
Вопрос:
Я пытаюсь прочитать csv-файл, чтобы найти соответствующие значения в словаре. У меня есть два csv-файла. Я должен создать словарь с первым csv-файлом. Затем мне нужно прочитать другой файл csv, чтобы найти совпадающие или соответствующие значения словаря,который я создал с помощью первого файла csv,но я не могу создать словарь из второго файла csv, потому что во втором файле csv будет дубликат внутри него (MAC12, 4 и MAC12, 2).
Вот как выглядит первый csv-файл.
Model #,Brand,Version
VB17,ASUS,14.0
AR51M,ALIEN WARE,15.5
MAC12,APPLE,13.7
XR55,ACER,17.1
Вот как выглядит второй csv-файл.
Model #,Quantity
MAC12,4
AR51M,3
XR55,1
MAC12,2
Затем мне нужно, чтобы мои выходные данные отображали марку, количество и версию в том порядке, в котором они отображаются во втором csv-файле, например так:
APPLE: 4 13.7
ALIEN WARE: 3 15.5
ACER: 1 17.1
APPLE: 2 13.7
Вот как выглядит мой код до сих пор:
import csv
MODEL = 0
BRAND = 1
VERSION = 2
def main():
models = model_numbers("model.csv", MODEL)
for i in models:
print(i, models[i])
with open("order.csv", ) as order_file:
reader = csv.reader(order_file)
next(reader)
for key in models.keys():
value = models[key]
brand = value[0]
quantity = value[1]
print(f"{brand}: {quantity}")
def model_numbers(filename, key):
models = {}
with open(filename, "rt") as models_file:
reader = csv.reader(models_file)
next(reader)
for key in reader:
model = key[MODEL]
brand_name = key[BRAND]
version = key[VERSION]
models[model] = [brand_name, version]
return models
if __name__ == "__main__":
main()
Вот как выглядит мой текущий результат:
VB17 ['ASUS', '14.0']
AR51M ['ALIEN WARE', '15.5']
MAC12 ['APPLE', '13.7']
XR55 ['ACER', '17.1']
ASUS: 14.0
ALIEN WARE: 15.5
APPLE: 13.7
ACER: 17.1
И это то, чего я хочу.
VB17 ['ASUS', '14.0']
AR51M ['ALIEN WARE', '15.5']
MAC12 ['APPLE', '13.7']
XR55 ['ACER', '17.1']
APPLE: 4 13.7
ALIEN WARE: 3 15.5
ACER: 1 17.1
APPLE: 2 13.7
Комментарии:
1. Почему
APPLE
количество 4, когда во втором файле у вас два MAC12: 4 и 2, что равно 6?2. О, я вижу, у вас они разные, хотя это одна и та же версия.
Ответ №1:
Вот моя попытка использовать информацию о файлах и необходимых выходных данных, которые вы предоставили:
import csv
def get_model_quantity():
models = []
with open("file_2.csv", "r") as f_in:
reader = csv.reader(f_in, delimiter=",")
next(reader)
for row in reader:
model = row[0]
quantity = row[1]
models.append((model, quantity))
return models
def get_model_information():
info = {}
with open("file_1.csv", "r") as f_in:
reader = csv.reader(f_in, delimiter=",")
next(reader)
for row in reader:
model = row[0]
brand = row[1]
version = row[2]
info[model] = {
"brand": brand,
"version": version
}
return info
model_quantity = get_model_quantity()
model_information = get_model_information()
for model, quantity in model_quantity:
model_info = model_information[model]
brand = model_info["brand"]
version = model_info["version"]
print(f"{brand}: {quantity} {version}")
Выход:
APPLE: 4 13.7
ALIEN WARE: 3 15.5
ACER: 1 17.1
APPLE: 2 13.7