Python:组合集合和数组

问题描述

我有一组包含唯一 int32 数字的“项目”。我想将它与阵列频率合并。两者大小相同。

table = {'items': items,'values': frequency}
C1 = pd.DataFrame(data=table)

按预期输出是这样的(第一列包含集合,第二列包含频率:

{A,B} | 25

{E,F,G} | 17

{D} | 5

但我收到一个错误TypeError: Set type is unordered

解决方法

您无法以您想要的方式组合它们。您可能想要使用的是 defaultdict

from collections import defaultdict

uids = defaultdict(int)

raw = get_data()

for uid in raw:
    uids[uid] += 1

这将生成一个字典,其中包含所有 uid 到该 uid 频率的映射。

如果您需要将频率映射到所有随频率出现的 uid,您可以颠倒这个技巧。

frequencies = defaultdict(set)

for uid,frequency in uids.items():
    frequencies[frequency].add(uid)