[英]Is there a way to combine two keys to make one? python
我有鍵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文件中執行此操作,因此我不想手動輸入我正在使用的所有名稱。 有沒有組合鍵的方法?
您能幫我或將我鏈接到可能有幫助的地方嗎?
您可以通過列表理解來創建所需的列表:
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'}
正如用戶roganjosh提到的,最好的方法是創建元組鍵。
這是通過循環遍歷行並以此添加到字典來完成的。
my_dict = {}
for row in rows:
my_dict[(row.Name, row.Id)] = row.Major
不要只是將它們附加為字符串。 由於名稱和ID彼此唯一,因此無法保證它們的串聯也唯一。 EX。 連接時,名稱:joe0 Id:01和名稱:joe Id:001相同。 將它們保存為元組是安全的。
假設數據位於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設置為索引,然后轉置。 這將擺脫索引中的列名。 然后,我將其轉換為字典。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.