我有键Name
,Id
和Major
。有没有一种方法可以使Name
和Id
的值成为键,而Major
是字典中的值?
Name Id Major
Joe 001 Math
Kyle 002 Coms
Lisa 003 Engr
Mia 004 Art
Nick 005 Engr
Olga 006 Math
{'Joe 001': Math, 'Kyle 002': Coms, 'Lisa 003': Engr, etc.}
我正在尝试从excel文件中执行此操作,因此我不想手动输入我正在使用的所有名称。有没有组合键的方法?
您能帮我或与我联系吗?
答案 0 :(得分:2)
您可以通过列表理解来创建所需列表:
d2=[
{'Name': 'Joe', 'Id': '001', 'Major': 'Math'},
{'Name': 'Kyle', 'Id': '002', 'Major': 'Coms'}
]
d3={x['Name']+" "+x['Id'] : x['Major'] for x in d2}
print (d3)
#{'Joe 001': 'Math', 'Kyle 002': 'Coms'}
答案 1 :(得分:1)
如roganjosh用户所述,最好的方法是创建元组键。
这是通过遍历行并以此添加到字典来完成的。
my_dict = {}
for row in rows:
my_dict[(row.Name, row.Id)] = row.Major
请勿只是将它们附加为字符串。由于名称和ID彼此唯一,因此无法保证它们的串联也唯一。例如连接时,名称:joe0 Id:01和名称:joe Id:001相同。将它们保存为元组是安全的。
答案 2 :(得分:1)
假设数据位于pandas.Dataframe中,则可以更改数据并使用pandas.DataFrame.to_dict。例如:
df['Key']=df['Name']+df['Id'] #combine the two columns you want to make keys
df=df.drop(['Name','Id'],axis=1).set_index('Key').T.to_dict('list')
将两列合并后,我将Key设置为索引,然后转置。这将摆脱索引中的列名。然后将其转换为字典。