我有以下列表:
name = ["Anne", "Jack", "Mary"]
我还有一个嵌套列表,其中每个元素都是另一个列表,并与 name
列表中的名称相连。如下所示:
n1 = [[0, 0, 3], [0, 5, 5], [1, 3, 3]]
所以对于列表
name
中的第一个元素'Anne'
,与之连接的来自n1
的列表是第一个元素[0, 0, 3]
。类似地,对于列表name
中的第二个元素"Jack"
,与之连接的来自n1
的列表是第二个元素[0, 5, 5]
,以此类推。我想要计算在n1
每个元素中每个数字出现的次数,并将其以字典格式连接到name
列表中的名称。所以我希望输出看起来像下面这样:{'Anne': {'0': 2, '3': 1}, 'Jack': {'0': 1, '5': 2}, 'Mary': {'1': 1, '3': 2}}
我尝试了以下方法:
from collections import Counter
clust = {}
for val in name:
clust[val] = {}
for e in n1:
wc = Counter(str(e1) for e1 in e)
clust[val] = dict(wc)
但是这给我输出了:
clust = {'Anne': {'1': 1, '3': 2}, 'Jack': {'1': 1, '3': 2}, 'Mary': {'1': 1, '3': 2}}
哪一个是不正确的?我怎样才能得到我想要的输出结果?
dict
一样处理一个Counter
,而且它还提供了额外的功能(例如most_common
方法、更容易地更新更多的项、合理的算术运算)。 - jonrsharpeCounter
可以兼容dict
的任何地方;isinstance(Counter(), dict)
是True
,因为它是一个子类(这也是为什么首选isinstance
而不是检查type
)。 - jonrsharpe