如何在列表中为每个变量分配一个数字,然后为相同的变量加上数字?

2024-09-27 19:28:53 发布

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

例如,如果输入ZZAZAAZ,则A的和将是14(因为它的位置是3,5,6),而Z的和将是14(1 + 2 + 4 + 7)。你知道吗

我该怎么做?你知道吗


Tags: zzazaaz
3条回答

对于s中的所有元素,您可以这样做。而且,它会在字符串s的一次传递中找到每个元素的计数,因此它在s中的元素数是线性的。你知道吗

>>> s = 'ZZAZAAZ'
>>> d = {}
>>> for i, item in enumerate(s):
    ... d[item] = d.get(item, 0) + i + 1
>>> print d
{'A': 14, 'Z': 14}

可以在sum中使用生成器表达式:

>>> s='ZZAZAAZ'
>>> sum(i for i,j in enumerate(s,1) if j=='A')
14

为了进一步使用Kasra's idea,如果您想要一个包含这些和的字典,您可以使用字典理解,并对唯一字符集进行迭代,如下所示:

>>> s = 'ZZAZAAZ' 
>>> {let:sum(a for a,b in enumerate(s,1) if b==let) for let in set(s)}
{'Z': 14, 'A': 14}

相关问题 更多 >

    热门问题