簡體   English   中英

在不使用 pandas 的情況下將字典轉換為 python 中的 csv?

[英]convert dictionary to csv in python without using pandas?

我有一個看起來像這樣的詞典列表:

{'match':['football','cricket','baseball'],'player':['2','11','8']}

我想將這本字典轉換成 csv 但不使用 pandas。

我的代碼:

import csv
my_dictionary = {'match':['football','cricket','baseball'],'player'['2','11','8']}
with open('data.csv', 'w') as f:
    for key in my_dictionary.keys():
        f.write("%s, %s\n" % (key, my_dictionary[key]))

output 我想看看:

match     player
football   2
cricket    11
baseball   8

因此,如果您想使用您的技術,您可以首先將所有鍵寫入第一行,如 header,然后遍歷列表中的剩余行,如下所示:

import csv

my_dictionary = {'match':['football','cricket','baseball'],'player':['2','11','8']}
with open('data.csv', 'w') as f:
    
    headers = ', '.join(my_dictionary.keys()) + '\n'
    f.write(headers)
    
    for row in zip(*my_dictionary.values()):
        string_row = ', '.join(row) + '\n'
        f.write(string_row)

Output:

match, player
football, 2
cricket, 11
baseball, 8

使用 zip 將這 2 個列表 ( 'match','player' ) 組合成一個元組列表。 ,加入每個元組。 然后只需將其中的每一個寫入文件即可。

import csv
my_dictionary = {'match':['football','cricket','baseball'],'player':['2','11','8']}
zipList = list(zip(my_dictionary['match'],my_dictionary['player']))
zipList = [','.join(x) for x in zipList]


with open('data.csv', 'w') as f:
    headers = ','.join(my_dictionary.keys()) + '\n'
    f.write(headers)
    for each in zipList:
        f.write("%s\n" % (each))

為避免使用 Pandas,請使用內置的 CSV 庫:

import csv
    
my_dictionary = {'match':['football','cricket','baseball'],'player':['2','11','8']}

with open('output.csv', 'w', newline='') as f_output:
    csv_output = csv.writer(f_output)
    csv_output.writerow(my_dictionary.keys())
    csv_output.writerows([*zip(*my_dictionary.values())])

這將產生output.csv包含:

match,player
football,2
cricket,11
baseball,8

您的字典鍵為您提供 header,如果您使用標准的*zip(*xxx)技巧來轉置條目,您可以將所有行寫在一個 go 中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM