在pyhon3.x中将值绑定到字典

2024-09-28 03:16:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把一个值赋给字典(dicio),键=列表中某个数字的计数,值=具有该计数的数字

我只是想知道为什么会这样:

for elem in list_A:

    dicio[list_A.count(elem)] = dicio.setdefault(list_A.count(elem),[]) + [elem]

这不会(使用.append或.extend):

for elem in list_A:

    dicio[list_A.count(elem)] = dicio.setdefault(list_A.count(elem),[]).extend([elem])

Tags: in列表for字典count数字list计数
1条回答
网友
1楼 · 发布于 2024-09-28 03:16:34

您应该在list_A中的值的set上迭代,因为这样您就不会反复计数了(这样效率更高)

然后,您可以将一个列表添加到已经创建的(或创建然后添加)列表中,该列表的键为count,元素重复出现在list_A中的次数

也就是说:

dicio = {}
for elem in set(list_A):
    count = list_A.count(elem)
    dicio[count] = dicio.setdefault(count, []) + [elem] * count

示例:

>>> list_A = [1, 2, 2, 2, 1, 5, 1, 7, 5, 7, 3]
>>> dicio = {}
>>> for elem in set(list_A):
...     count = list_A.count(elem)
...     dicio[count] = dicio.setdefault(count, []) + [elem] * count
... 
>>> dicio
{3: [1, 1, 1, 2, 2, 2], 1: [3], 2: [5, 5, 7, 7]}

请注意,这不能用看起来更整洁的方式来完成:dicio.setdefault(count, []).append([elem] * count),因为这将附加一个列表,而不是单个元素,因此我们将重新分配将前一个列表与新元素连接起来的结果

相关问题 更多 >

    热门问题