name = ["Anne","Jack","Mary"]
我还有一个嵌套列表,其中每个元素是另一个列表,并与名称列表索引中的名称相关联.如下所示:
n1 = [[0,3],[0,5,5],[1,3,3]]
因此,对于’Anne’,列表名称中的第一个元素,连接到它的n1列表是第一个元素[0,3].
类似地,对于“Jack”,列表名称中的第二个元素,连接到它的n1的列表是第二个元素[0,依此类推.
我想计算n1的每个元素中每个数字的出现次数,并以字典格式将其连接到名称列表中的名称.
所以我希望我的输出看起来如下所示:
{'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}}
这是不正确的.如何实现我想要的输出?
解决方法 您需要将n1中的数据与名称中的每个项目进行匹配;最简单的方法是使用zip
: >>> from collections import Counter>>> name = ["Anne","Mary"]>>> n1 = [[0,3]]>>> {name_: Counter(data) for name_,data in zip(name,n1)}{'Anne': Counter({0: 2,3: 1}),'Jack': Counter({5: 2,0: 1}),'Mary': Counter({3: 2,1: 1})}
(注意使用“字典理解”,见the docs.)
如果计数器中的键是字符串是至关重要的,则可以在计数之前使用map
转换整数:
>>> {name_: Counter(map(str,data)) for name_,n1)}{'Anne': Counter({'0': 2,'3': 1}),'Jack': Counter({'5': 2,'0': 1}),'Mary': Counter({'3': 2,'1': 1})}总结
以上是内存溢出为你收集整理的python – 使用Counter对象从两个列表中创建字典全部内容,希望文章能够帮你解决python – 使用Counter对象从两个列表中创建字典所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)