我正在尝试列出列表并转换为字典。见下面的代码
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.我正在努力的是如何将这些数据放在一起?
答案 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:]}