首页 > 解决方案 > 如何将列表转换为使用元组作为键的字典

问题描述

我想用 Panda 读取一个 excel 表,并创建一个元组列表。然后,我想将列表转换为以元组为键的字典。我怎样才能做到这一点?

这是我正在阅读的表格;

A B 0.6

A C 0.7

C D 1.0

C A 1.2

D B 0.7

D C 0.6

这是我阅读表格的方式;

import pandas as pd

df= pd.read_csv("my_file_name.csv", header= None)  

my_tuple = [tuple(x) for x in df.values]

现在,我想要以下结构。

my_data =  {("A", "B"): 0.6,

            ("A", "C"): 0.7,

            ("C", "D"): 1,

            ("C", "A"): 1.2,

            ("D", "B"): 0.7,

            ("D", "C"): 0.6}

标签: pythonpandaslistdictionary

解决方案


Set_index 和 to_dict

df.set_index(['a', 'b']).c.to_dict()

{('A', 'B'): 0.6,
 ('A', 'C'): 0.7,
 ('C', 'A'): 1.2,
 ('C', 'D'): 1.0,
 ('D', 'B'): 0.7,
 ('D', 'C'): 0.6}

选项2:另一种使用 zip 的解决方案

dict(zip(df[['A', 'B']].apply(tuple, 1), df['C']))

选项 3:

k = df[['A', 'B']].to_records(index=False).tolist()
dict(zip(k, df['C']))

推荐阅读