Python 如何创建唯一密钥对字典的字典?

Python 如何创建唯一密钥对字典的字典?,python,pandas,Python,Pandas,我有一个pandas数据框,其中包含IssuerId和Sedol列。在某些情况下,IssuerIds将相同,但Sedol将始终不同 我想创建一个字典或多级索引来聚合这些内容,以便能够轻松地遍历它们。例如,我目前有: IssuerID Sedol 1 1 1 2 2 3 3 4 我想以某种方式创造: [{1: [1,2]},{2: 3},{3:4}] 如果您执行groupBy+apply(list),然后调用命令,您将得到

我有一个pandas数据框,其中包含
IssuerId
Sedol
列。在某些情况下,
IssuerId
s将相同,但
Sedol
将始终不同

我想创建一个字典或多级索引来聚合这些内容,以便能够轻松地遍历它们。例如,我目前有:

IssuerID Sedol
1          1
1          2
2          3
3          4
我想以某种方式创造:

[{1: [1,2]},{2: 3},{3:4}]

如果您执行
groupBy
+
apply(list)
,然后调用
命令,您将得到:

d = df.groupby("IssuerID")["Sedol"].apply(list).to_dict()
print(d)
#{1: [1, 2], 2: [3], 3: [4]}
现在只需重新格式化
d
,即可获得所需的输出

如果您想要一本词典,请使用听写理解:

new_dict = {k: v if len(v) > 1 else v[0] for k, v in d.items()}
print(new_dict)
#{1: [1, 2], 2: 3, 3: 4}
new_list = [{k: v if len(v) > 1 else v[0]} for k, v in d.items()]
print(new_list )
#[{1: [1, 2]}, {2: 3}, {3: 4}]
如果需要词典列表,请使用列表:

new_dict = {k: v if len(v) > 1 else v[0] for k, v in d.items()}
print(new_dict)
#{1: [1, 2], 2: 3, 3: 4}
new_list = [{k: v if len(v) > 1 else v[0]} for k, v in d.items()]
print(new_list )
#[{1: [1, 2]}, {2: 3}, {3: 4}]

使用
groupby

l=[{x:y.tolist()}for x , y in df.groupby('IssuerID')['Sedol']]
l
[{1: [1, 2]}, {2: [3]}, {3: [4]}]

所需的输出不是有效的python对象。你是说
[{1:[1,2]},{2:3},{3:4}]
?是的,我指的是字典列表,道歉