Python字典:我可以将列表作为字典中的键吗?

时间:2020-06-17 00:42:59

标签: python pandas dictionary

<ipython-input-3-e36ce72b5104> in <module>
 87     return s_u_df, s_i_df, p_i_df, s_t_df, p_t_df
 88 
---> 89 print(analyze_data())
 90 
 91 

<ipython-input-3-e36ce72b5104> in analyze_data()
 27     #unit_data분석
 28     for i in  unq_unit1_dt:
---> 29         a = unit_data['1st-unit'].count(i)
 30         unit1_d[str(i)] = a
 31         a = 0

~\Anaconda3\lib\site-packages\pandas\core\series.py in count(self, level)
   1718 
   1719         if isinstance(level, str):
-> 1720             level = self.index._get_level_number(level)
   1721 
   1722         lev = self.index.levels[level]

~\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in _get_level_number(self, level)
   1418 
   1419     def _get_level_number(self, level):
-> 1420         self._validate_index_level(level)
   1421         return 0
   1422 

~\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in _validate_index_level(self, level)
   1414         elif level != self.name:
   1415             raise KeyError(
-> 1416                 f"Requested level ({level}) does not match index name ({self.name})"
   1417             )
   1418 

KeyError: "Requested level (['TFT3_Fiora', 'TFT3_Caitlyn', 'TFT3_Leona', 'TFT3_Vi', 'TFT3_Vayne', 'TFT3_Irelia', 'TFT3_Riven', 'TFT3_Thresh', 'TFT3_Ekko', 'empty', 'empty', 'empty', 'empty']) does not match index name (None)"

这是我的错误

我打算做的是我有多个重复的列表,我想将“列表作为键”:“重复数”作为值匹配

首先我得到没有重复的列表,并且

通过使用“ for in range”,我尝试算出原始列表中没有重复列表的内容

유닛.csv文件由3列组成,并且其中具有列表

有什么更好的方法可以做我打算做的事吗?

这是我的代码

    unq_unit1_dt = unit_data['1st-unit'].drop_duplicates()
unq_unit2_dt = unit_data['2nd-unit'].drop_duplicates()
unq_unit3_dt = unit_data['3rd-unit'].drop_duplicates()

#저장할 리스트
unit1_d= {};s_u1_d = {};u1_L = []
unit2_d = {};s_u2_d = {};u2_L = []
unit3_d = {};s_u3_d = {};u3_L = []
s_u_d = {};u4_L = []

#unit_data분석
for i in  unq_unit1_dt:
    a = unit_data['1st-unit'].count(i)
    unit1_d[str(i)] = a
    a = 0

for j in unq_unit2_dt:
    b = unit_data['2nd-unit'].count(j)
    unit2_d[j] = b
    b = 0

for h in  unq_unit3_dt:
    c = unit_data['3rd-unit'].count(h)
    unit3_d[h] = c
    c = 0

#데이터 정렬 후 값 추출
s_u1_d = sort_dict(unit1_d); u1_df = pd.DataFrame(s_u1_d); u1_df.to_csv("유닛1.csv", index=False,encoding = 'cp949')
s_u2_d = sort_dict(unit2_d); u2_df = pd.DataFrame(s_u2_d); u2_df.to_csv("유닛2.csv", index=False,encoding = 'cp949')
s_u3_d = sort_dict(unit3_d); u3_df = pd.DataFrame(s_u3_d); u3_df.to_csv("유닛3.csv", index=False,encoding = 'cp949')

for i in range(5):
    u1_L.append(list(s_u1_d.keys)[i])
    u2_L.append(list(s_u2_d.keys)[i])
    u3_L.append(list(s_u3_d.keys)[i])

1 个答案:

答案 0 :(得分:1)

我发现您的代码难以阅读,但是通常,根据Python文档,并非每个值都被授权为Python字典键。仅允许不可变值:您无法更改的值。因此,任何类型的数字都可以使用,字符串可以使用,元组可以使用,对象可以使用(这是您创建的类的实例),但是列表不起作用,因为您可以更改它们。您可以从不使用列表作为字典键。但是,同样,元组也可以。