python词典 - dict列表

时间:2017-08-28 18:59:44

标签: python dictionary

我正在尝试列出列表并转换为字典。见下面的代码

yearend = [['empl','rating1','rating2','rating3'],['mike','4','4','5'],   
['sam','3','2','5'],['doug','5','5','5']]      
extract the employee names 
employee = [item[0] for item in yearend] #select 1st item from each list  
employee.pop(0) # pop out the empl  
print(employee)  
### output##################################################  
##['mike', 'sam', 'doug']###################################  
###Output###################################################  
###extract the various rating types   
yearend1 = yearend [:] # make a copy  
rating = yearend1.pop(0) # Pop out the 1st list  
rating.pop(0)  
print(rating)  
### output##################################################  
##['rating1', 'rating2', 'rating3']#########################  
###Output###################################################  
# pick employee and rating and convert rating to numeric  
empl_rating = {t[0]:t[1:] for t in yearend1}  
for key,value in empl_rating.items():  
value = list(map(int, value))   
empl_rating[key] = value  
print(empl_rating)  
### output##################################################  
##{'mike': [4, 4, 5], 'sam': [3, 2, 5], 'doug': [5, 5, 5]}##  
###Output###################################################  

我像上面那样提取了数据,现在我试图将dict(New_dicts)放在一起,以便在

New_dicts['sam']['rating1']  

我得到3或

New_dicts['doug']['rating3']  

我得到5.我正在努力的是如何将这些数据放在一起?

2 个答案:

答案 0 :(得分:0)

def todict(ratings) :
    a ={} 
    a["rating1"] = ratings [0]
    a["rating2"] = ratings [1]
    a["rating3"] = ratings [2]
    return a

解决问题的一种方法是删除带标题的第一行,然后执行: {item[0] : todict(item[1:]) for item in your_list}

顺便说一句,这个解决方案是基于您想要索引它的方式。我确定那里有一个更通用的解决方案。

因为你想要的只是一个嵌套的词典

答案 1 :(得分:0)

您可以使用dict comprehension

New_dicts = {line[0]: {yearend[0][i + 1]: int(rating) for i, rating in enumerate(line[1:])} for line in yearend[1:]}