📦 Python 自學筆記第 8 集:資料結構進化版(JSON、CSV、自製小資料庫)

更新 發佈閱讀 6 分鐘

你的資料越來越多,list 和 dict 有點不夠用了? 別擔心,這一集我們來學會「怎麼把資料存得更漂亮、讀得更有效率」。


1️⃣ JSON 是什麼?為什麼大家都愛它?

JSON(JavaScript Object Notation)是一種常見的「資料交換格式」, 它長得很像 Python 的 dict,也能存 list,而且跨平台都能讀得懂,超萬用。

📌 適合存「巢狀資料」或「設定檔」,例如人物角色、產品資訊、聊天記錄等。

✅ 寫入 JSON 檔

import json

person = {"name": "Joe", "age": 7, "hobbies": ["reading", "soccer"]}

with open("data.json", "w", encoding="utf-8") as f:
json.dump(person, f, ensure_ascii=False, indent=2)

🔽 執行後會產生漂亮的 JSON 檔,內容像這樣:

{
"name": "Joe",
"age": 7,
"hobbies": [
"reading",
"soccer"
]
}

✅ 讀取 JSON 檔

with open("data.json", "r", encoding="utf-8") as f:
loaded = json.load(f)
print(loaded["name"])

🔽 輸出:

Joe


2️⃣ CSV 表格:像 Excel 的好朋友

CSV(Comma-Separated Values)是一種用逗號分隔欄位的文字格式, 你可以把它想像成「純文字版的 Excel」。非常適合用來儲存名單、成績表、帳務資料。

範例內容:

姓名,年齡,分數
Joe,7,88
May,8,92

✅ 讀取 CSV

import csv

with open("grades.csv", newline="", encoding="utf-8") as f:
reader = csv.reader(f)
for row in reader:
print(row)

🔽 輸出:

['姓名', '年齡', '分數']
['Joe', '7', '88']
['May', '8', '92']

✅ 寫入 CSV

with open("grades.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerow(["姓名", "年齡", "分數"])
writer.writerow(["Joe", 7, 88])
writer.writerow(["May", 8, 92])

🔽 執行後會產出一個 grades.csv,可以用 Excel 開啟!


3️⃣ 自製小資料庫:不學 SQL 也能存資料

想存使用者紀錄、遊戲狀態或筆記內容,又還不想學 SQL? 你可以用 Python 的 dict 搭配 json 檔案,自製小型資料庫:

import json

# 模擬資料庫
data = {}
data["joe"] = {"score": 88, "age": 7}

# 儲存
with open("db.json", "w", encoding="utf-8") as f:
json.dump(data, f)

# 讀回來使用
with open("db.json", "r", encoding="utf-8") as f:
db = json.load(f)
print(db["joe"]["score"])

🔽 輸出:

88

🔸「db.json 就像一個模擬資料庫」,並說明如何透過 json.load() 將資料取回並操作。

🔸這樣你就可以把資料「記起來」,下次開啟程式還能繼續使用!

✅ 如何新增或修改資料庫內容

# 新增一筆使用者資料
db["may"] = {"score": 92, "age": 8}

# 修改已存在使用者的分數
db["joe"]["score"] = 90

# 刪除使用者資料
if "may" in db:
del db["may"]

# 列出所有使用者與分數
for user, info in db.items():
print(f"{user} 的分數是 {info['score']}")

# 儲存回資料庫檔案
with open("db.json", "w", encoding="utf-8") as f:
json.dump(db, f, ensure_ascii=False, indent=2)

🔽 說明:

  • 你可以像操作 dict 一樣新增 key 或修改內部欄位,然後再用 json.dump() 寫回檔案,達成「資料庫更新」的效果。
  • del db["may"] 可以刪除指定使用者資料(記得先檢查是否存在)
  • db.items() 讓你能走訪整個資料庫,列出每個使用者的資訊
  • 最後仍需使用 json.dump() 把資料存回檔案中
  • del db["may"] 可以刪除指定使用者資料(記得先檢查是否存在)
  • db.items() 讓你能走訪整個資料庫,列出每個使用者的資訊
  • 最後仍需使用 json.dump() 把資料存回檔案中python


4️⃣ 小結:我該用哪一種?

vocus|新世代的創作平台


留言
avatar-img
Dolly的奇妙育兒之旅
20會員
132內容數
一串感恩又心累、感謝又荒謬的心路歷程
2025/07/11
Python 提供了強大的 turtle 模組,這是一個讓你可以在畫布上操作一隻「烏龜」來繪製各種圖形的工具。它不僅能幫助學習編程,還能輕鬆創建動畫、圖形及互動式遊戲。無論是數學家、藝術家,還是對編程感興趣的你,都可以從這個簡單又有趣的工具中獲得樂趣。
Thumbnail
2025/07/11
Python 提供了強大的 turtle 模組,這是一個讓你可以在畫布上操作一隻「烏龜」來繪製各種圖形的工具。它不僅能幫助學習編程,還能輕鬆創建動畫、圖形及互動式遊戲。無論是數學家、藝術家,還是對編程感興趣的你,都可以從這個簡單又有趣的工具中獲得樂趣。
Thumbnail
2025/07/10
lambda 函式適合快速做排序、過濾、計算——尤其搭配 sorted(),能縮減複雜的程式碼。
Thumbnail
2025/07/10
lambda 函式適合快速做排序、過濾、計算——尤其搭配 sorted(),能縮減複雜的程式碼。
Thumbnail
2025/07/09
一段常用的流程,我們希望可以「取個名字」,以後一行就呼叫整段邏輯,這就是函式(function)
Thumbnail
2025/07/09
一段常用的流程,我們希望可以「取個名字」,以後一行就呼叫整段邏輯,這就是函式(function)
Thumbnail
看更多
你可能也想看
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
本文在介紹如何用Python繪製各點大小不同的散布圖及用箭頭標註特殊點
Thumbnail
本文在介紹如何用Python繪製各點大小不同的散布圖及用箭頭標註特殊點
Thumbnail
介紹如何用assign函數在Python中建立新欄位
Thumbnail
介紹如何用assign函數在Python中建立新欄位
Thumbnail
我們在學習kafka的過程中最不習慣的就是不管什麼樣的資料, 在kafka的傳輸過程都會是binary的資料格式, 因此我們在撰寫程式的過程中並不是那麼的直觀, 必須將資料從float、int…資料型態轉型成binary才能順利傳送, 那麼基於這樣的前提之下, python這套程式語言可以怎麼做
Thumbnail
我們在學習kafka的過程中最不習慣的就是不管什麼樣的資料, 在kafka的傳輸過程都會是binary的資料格式, 因此我們在撰寫程式的過程中並不是那麼的直觀, 必須將資料從float、int…資料型態轉型成binary才能順利傳送, 那麼基於這樣的前提之下, python這套程式語言可以怎麼做
Thumbnail
JSON(JavaScript Object Notation)是一種用於資料交換的輕量級資料格式,通常用於網路應用程式之間的資料傳遞。 JSON的格式易於閱讀和撰寫,也易於解析和產生,因此它在開發中被廣泛使用。 JSON由兩種結構組成:物件(Object)和陣列(Array)。
Thumbnail
JSON(JavaScript Object Notation)是一種用於資料交換的輕量級資料格式,通常用於網路應用程式之間的資料傳遞。 JSON的格式易於閱讀和撰寫,也易於解析和產生,因此它在開發中被廣泛使用。 JSON由兩種結構組成:物件(Object)和陣列(Array)。
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
本文介紹了在進行資料分析時,將類別欄位轉換為數值欄位的方法,包括Label Encoding、One-Hot Encoding、Binary Encoding、Target Encoding和Frequency Encoding。每種方法的應用範例、優缺點和適用場景都有詳細說明。
Thumbnail
本文介紹了在進行資料分析時,將類別欄位轉換為數值欄位的方法,包括Label Encoding、One-Hot Encoding、Binary Encoding、Target Encoding和Frequency Encoding。每種方法的應用範例、優缺點和適用場景都有詳細說明。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News