我有以下文本文件格式
Id, person, age, city
ef12, james, 23, berlin
yt34, mary, 45, pisa
rt23, john, 56, barcelona
我想生成一种类型的字典。请帮帮我。
{ef12: {person:'james', age:'23',city:'berlin'},
yt34: {person:'mary', age:'45',city:'pisa'},
rt23: {person:'john', age:'23',city:'barcelona'},
}
我被困在下面
`import time
import sys
def getData():
file = open('traffic.txt', 'r')
data = file.readlines()
myDic = {}
#for line in data.split('\n'):
for line in data:
tmp = line.strip().split()
#myDic[tmp[0]]= list(tmp[1])
#print(tmp[2])
myDic[tmp[0]] = {tmp[1],tmp[2],tmp[3],tmp[4],tmp[5]}
file.close()
return myDic
theNewDictionary = getData()
print(theNewDictionary)
`
答案 0 :(得分:1)
您只需要添加密钥
def getData():
file = open('traffic.txt', 'r')
data = file.readlines()
myDic = {}
for line in data:
tmp = [s.replace(' ', '') for s in line.strip().split(',')]
myDic[tmp[0]] = {'person': tmp[1], 'age': tmp[2], 'city': tmp[3]}
file.close()
return myDic
答案 1 :(得分:0)
split
逗号:split(',')
strip
之后split
删除空格:[word.strip() for word in line.split(',')]
tmp[4]
和tmp[5]
- 如果您这样做,则为IndexError
。{'person': tmp[1], 'age': tmp[2], 'city': tmp[3]}
这意味着:
def getData():
file = open('traffic.txt', 'r')
data = file.readlines()
myDic = {}
for line in data:
tmp = [word.strip() for word in line.split(',')]
myDic[tmp[0]] = {'person': tmp[1], 'age': tmp[2], 'city': tmp[3]}
file.close()
return myDic
答案 2 :(得分:0)
另一种方法是从csv中读取行并用每行更新字典:
dicty = {}
for row in csv.DictReader(open('a.csv')):
dicty.update({
row['Id']: {
'person': row['person'],
'age' : row['age'],
'city' : row['city']
}
})
print(dicty)
# {'ef12': {'person': 'james', 'age': '23', 'city': 'berlin'},
# 'yt34': {'person': 'mary', 'age': '45', 'city': 'pisa'},
# 'rt23': {'person': 'john', 'age': '56', 'city': 'barcelona'}}
dicty.get('ef12')
# {'age': '23', 'city': 'berlin', 'person': 'james'}