如何在 Python 中从用户输入的 CSV 文件创建两个格式化的词典?

问题描述 投票:0回答:1

为以下任务创建一个 Python 解决方案。确保解决方案生成的输出格式与下面示例中显示的格式完全相同,包括大写和空格。

任务: 创建一个解决方案,该解决方案接受标识 CSV 文件名称的输入,例如“input1.csv”。每个文件包含两行逗号分隔值。导入内置模块 csv 并使用其 open() 函数和 reader() 方法为指定文件中的每一行逗号分隔值创建一个键值对字典。将文件内容输出为两个字典。

解的输出应该是这样的格式

{'key': 'value', 'key': 'value', 'key': 'value'}
{'key': 'value', 'key': 'value', 'key': 'value'}

现在,我已经在网上找到了部分问题的解决方案,但没有解决该项目要求的每个问题。我已经尝试过 ChatGPT,但它无法弄清楚,我已经尝试修改代码两天了,但我似乎无法弄清楚。

问题说结果需要完全像这样输出(包括所有标点和空格):

{'a': '100', 'b': '200', 'c': '300'}
{'bananas': '1.85', 'steak': '19.99', 'cookies': '4.52'}

所以,这是 ChatGPT 的尝试(删除了注释):

import csv
csv_file_name = input()
dict1 = {}
dict2 = {}
with open(csv_file_name, 'r') as file:
    csv_reader = csv.reader(file)   
    for row in csv_reader:
        dict1[row[0]] = row[1]
        dict2[row[2]] = row[3]
print(dict1)
print(dict2)

但这会导致输出:

{' a': ' 100', 'bananas': ' 1.85'}
{' b': ' 200', ' steak': ' 19.99'}

所以,然后我尝试了:

import csv
filename = input()
with open(filename, 'r') as data:
    for line in csv.DictReader(data):
        print(line)

但我运行它并得到:

{' a': 'bananas', ' 100': ' 1.85', ' b': ' steak', ' 200': ' 19.99', ' c': ' cookies', ' 300': ' 4.52'}

所以,然后我尝试了:

import csv
filename = input()
with open(filename, 'r') as read_obj:
    csv_reader = csv.reader(read_obj)
    list_of_csv = list(csv_reader)
    print(list_of_csv)

我得到了:

[[' a', ' 100', ' b', ' 200', ' c', ' 300'], ['bananas', ' 1.85', ' steak', ' 19.99', ' cookies', ' 4.52']]

这几乎是正确的,但我需要在元组之后换行,删除方括号和空格并添加冒号。当我尝试将 split() 放在代码中的任何地方时,我总是收到错误消息,而其他格式化解决方案似乎不适用于字典输出。我仍然需要能够输出为两个词典。

python csv dictionary format tuples
1个回答
0
投票

我怀疑你的

input1.csv
长这样:

a, 100, b, 200, c, 300

香蕉,1.85,牛排,19.99,饼干,4.52

在不直接给出作业答案的情况下,考虑

range(0, len(some_list), 2)
将产生该列表中所有其他项目的索引。例如:

some_list = [1, 2, 3, 4]
for index in range(0, len(some_list), 2):
    print(some_list[index])

输出:

1
3

试着找出你可以在哪里使用这个想法。

© www.soinside.com 2019 - 2024. All rights reserved.