我有一本字典,看起来像这样:a = {1: [['-','A'],['+','B'],['-','C']]}
我想把它改造成如下:a = {1: [['-','AC'],['+','B']}
或者如果我能把它转换成pandas Dataframe 格式就更好了:Col1 Col2 Col3
1 - AC
1 + B
我已经尝试了下面的方法,这似乎是一个过于复杂的解决方案,也不能完全做到我想要的。
tmp = collections.defaultdict(list)
for key,value in a.items():
for v in list(value):
tmp[v[0]].append([v[1]])
这给了我一本新字典defaultdict(<class 'list'>, {'-':['A','C'], '+':['B']}
编辑:我现在有我想要的,但如果有人有更短更聪明的方法来做,我很乐意向你学习。
for key, value in a.items():
tmp = collections.defaultdict(list)
for v in value:
tmp[v[0]].append(v[1])
val = [[ i, ''.join(j)] for i,j in tmp.items()]
a[key] = val
我还确保我总是有+和-值,即使是空的,并使用
pd.DataFrame.from_dict(a, orient='index')
2条答案
按热度按时间chhkpiq41#
一个更pythonic的方法是这样的
set
函数有效地传达了您只需要对中唯一的第一个元素。如果你事先知道你总是想要“-”和“+”
你可以更pythonic:
mi7gmzs62#
我现在已经得到了我想要的,但是如果有人有更短更聪明的方法来做到这一点,我很乐意向你学习。
我还确保我总是有+和-值,即使是空的,并使用