[英]How to read through a csv file to find corresponding values in a dictionary in Python?
我正在尝试通读 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
这是我尝试使用您提供的有关文件和所需输出的信息:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.