有没有比使用两个for循环更有效的方法将字符串转换为字典?

2024-06-25 23:06:33 发布

您现在位置:Python中文网/ 问答频道 /正文

是否有更简单的方法来执行以下代码:

# Import data for CSV

csv_file = open("csv_file.txt", "r")
list_csv = [x.strip() for x in csv_file.readlines()]


#   Convert to dictionary
list_item = []
dictionary_item = []

for item in list_csv:
    item = item.split(",")
    list_item.append(item)

for x in list_item:
    dictionary_item.append({'club': x[0],
                            'city': x[1],
                            'country': x[2]})

print(dictionary_item)

“csv_file.txt”的内容:

Manchester United, Manchester,UK
Real Madrid,Madrid,Spain
Juventus,Turin,Italy

解释我试图实现的目标:

我想从CSV文件中获取数据,然后将其转换为一个列表,其中包含一个字典,其中键为“club”、“city”、“country”,值就是CSV文件中的值

任何帮助都将不胜感激:)


Tags: csvintxtcityfordictionaryitemcountry
3条回答

当我第一次看你的问题时,我注意到for循环做了几乎相同的事情。下面是我如何在保持输出不变的情况下实现的

# Import data for CSV

csv_file = open("soccer_clubs.txt", "r")

dictionary_item = []

for x in csv_file.readlines():
    x.strip()
    dictionary_item.append({'club': x[0],
                            'city': x[1],
                            'country': x[2]})
    
print(dictionary_item)

没有理由使用2个for循环,因为您可以拆分该项并将其放入单个for循环中所需的格式,如下所示:

# Import data for CSV

csv_file = open("csv_file.txt", "r")
list_csv = [x.strip() for x in csv_file.readlines()]

dictionary_item = []

for item in list_csv:
    x = item.split(",")
    dictionary_item.append({'club': x[0],
                            'city': x[1],
                            'country': x[2]})

print(dictionary_item)

Python还有a built in CSV reader,如果您不想手动完成所有工作,那么最好使用它

使用Python的csv读取功能:

import csv

with open('csv_file.txt', 'r', newline='') as f:
    reader = csv.DictReader(f, ('club', 'city', 'country'))
    clubs = list(reader)
    
print(clubs)
# [{'club': 'Manchester United', 'city': ' Manchester', 'country': 'UK'}, {'club': 'Real Madrid', 'city': 'Madrid', 'country': 'Spain'}, {'club': 'Juventus', 'city': 'Turin', 'country': 'Italy'}]

相关问题 更多 >