iT邦幫忙

0

Python的list轉dict問題

剛自學,請問我已把資料分出來為list,
['數學=80','英文=90','自然=70]

但是要如何才能再分開轉為dict?
這樣我才能由print(dic["數學"])印出為80

data=row["查詢"].split("\n")
print(data)

謝謝教導

108804再發問
謝謝回答,
但執行到一半,發現原來來源資料格式還不一致,會出現錯誤,
資料來源為檔案,
我是一行一行讀入處理
如:分出後,資料格式list為
第1筆:['數學=80','英文=90','自然=70']
第2筆:['數學=40','英文-70','自然-40','國語=60']
第3筆:['學數60','英文=50','國語=80']
import csv
with open("1.csv",mode="r",encoding="utf-8") as file:
rows=csv.DictReader(file)
for row in rows:
data=row["分數"].split("\n")
if str(data).find("英文") > 0:
data=str(data).replace("英文-","英文=")
result=dict([d.split("=") for d in data])
print (result)

我是想把資料格式都換成一樣的,再轉dict,但是這樣會有錯誤發生,
ValueError: dictionary update sequence element #1 has length 1; 2 is required
請問我該怎麼修正,謝謝教導。

2 個回答

1
黃阿佐
iT邦新手 5 級 ‧ 2019-08-05 01:09:51

我是想把資料格式都換成一樣的,再轉dict,但是這樣會有錯誤發生,
ValueError: dictionary update sequence element #1 has length 1; 2 is required

你會有這個問題是因為你其中這個項目「自然-40」切失敗,

第2筆:['數學=40','英文-70','自然-40','國語=60']

導致Input進 dict() 只剩下一個元素,無法成立 "dict",
故系統反饋Err訊息給你,
解決辦法就是無差別的將 "-" 直接轉成 "="

# ['數學=80','英文=90','自然=70']
# ['數學=40','英文-70','自然-40','國語=60']
# ['學數60','英文=50','國語=80']

with open("1.csv","r",encoding="utf-8") as file:
    while True:
        rows=file.readline().replace("-","=")
        if rows=="":break
        result=dict([d.split("=") for d in data])
        print(result)

我要發表回答

立即登入回答