簡體   English   中英

有沒有辦法將兩個鍵組合成一個鍵? 蟒蛇

[英]Is there a way to combine two keys to make one? python

我有鍵NameIdMajor 有沒有一種方法可以使NameId的值成為鍵,而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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM