处理python词典中的重复键

时间:2016-12-06 14:23:25

标签: python dictionary

如果之前已经回答过这个问题但我似乎无法找到它,请提前抱歉。

我有像这样的熊猫数据框:

id | value1 | value2 | ... | valueN
1  | 321    | 44     | ... | 7766
2  | 5678   | 7638   | ... | 987423
2  | 0971   | 7638   | ... | 1
and so on...

我正确加载它并且我想要实现的是OrderedDict,如果需要,它将折叠双值。对于上面的例子,

输出字典应为:

{1: ['321', '44', ..., '7766'], 2:['5678,0971', '7638', ..., '987423,1']}

请注意,字典的值为list,列表的值为strings

到目前为止我的代码是:

od = collections.OrderedDict()
for k in df.id:
        if k in od:
            # This key, pre-exists in this dictionary, so we have to append values
            # what should I do here?
        else:
            # new value inserted. proceed.
            od[k] = unordered_dict.get(k)

任何想法?

1 个答案:

答案 0 :(得分:0)

我认为这就是你所需要的,至少它对我的虚拟数据起作用了:

all_data = {}                   
for column in df.columns.values[1:]:
    data = df.groupby('id').apply(lambda x: ','.join(x[column])).to_dict()
    for key in data:
        if key in all_data.keys():
            all_data[key].append(data[key])
        else:
            all_data[key] = [data[key]]