将列表转换为字典

nrj*_*nrj 0 python

我想将下面的数据转换为字典,第一列为Id编号,其余元素为值

EDF768, Bill Meyer, 2456, Vet_Parking

TY5678, Jane Miller, 8987, AgHort_Parking

GEF123, Jill Black, 3456, Creche_Parking
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已打开文件并将数据转换为列表.但我无法将其转换为字典,因为它表明等式太长.

def createNameDict():
      file = open("C:\Users\user\Desktop\\ParkingData_Part2.txt","rt")
      contents = file.read()
      print contents,"\n"
      data_list = [line.split(",")  for line in contents.split("\n")]
      print data_list, "\n"
      dict_list = []
      data_dict = {}
      for line in data_list:
        key = line[0]
        value = (line[1], line[2], line[3])
        data_dict[key] = value
        data_dict = dict()

        dict_list.append(data_dict)
        # start dictionary over
        #print data_dict
      print (data_list)


      file.close()
Run Code Online (Sandbox Code Playgroud)

我的输出是:

[['EDF768', ' Bill Meyer', ' 2456', ' Vet_Parking'], 
['TY5678', ' Jane Miller', ' 8987', ' AgHort_Parking'], 
['GEF123', ' Jill Black', ' 3456', ' Creche_Parking'], 
['ABC234', ' Fred Greenside', ' 2345', ' AgHort_Parking'], 
['GH7682', ' Clara Hill', ' 7689', ' AgHort_Parking'], 
['JU9807', ' Jacky Blair', ' 7867', ' Vet_Parking'], 
['KLOI98', ' Martha Miller', ' 4563', ' Vet_Parking'], 
['ADF645', ' Cloe Freckle', ' 6789', ' Vet_Parking'], 
['DF7800', ' Jacko Frizzle', ' 4532', ' Creche_Parking'], 
['WER546', ' Olga Grey', ' 9898', ' Creche_Parking'], 
['HUY768', ' Wilbur Matty', ' 8912', ' Creche_Parking']] 
Run Code Online (Sandbox Code Playgroud)

有人可以给我提示将上面的列表转换成字典,如:

{'EDF768': ' Bill Meyer', ' 2456', ' Vet_Parking'}
Run Code Online (Sandbox Code Playgroud)

hex*_*rot 7

使用csv模块:

import csv

d = {}

with open('ParkingData_Part2.txt','r') as fh:
    for line in csv.reader(fh):
        key = line.pop(0)
        d[key] = [item.strip() for item in line]

print d
Run Code Online (Sandbox Code Playgroud)

回报

{'TY5678': ['Jane Miller', '8987', 'AgHort_Parking'], 'GEF123': ['Jill Black', '3456', 'Creche_Parking'], 'EDF768': ['Bill Meyer', '2456', 'Vet_Parking']}
Run Code Online (Sandbox Code Playgroud)

  • 我不够+1.使用正确的工具完成工作.也就是说,我建议在map和`string.strip()`上使用列表理解 - 主要是因为`string.strip()`不赞成使用字符串本身的方法.我做了那个编辑. (2认同)