加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

如何为python列表的每个元素实现一个计数器?

发布时间:2020-12-20 13:49:20 所属栏目:Python 来源:网络整理
导读:使用 Python 3.4 我有一种方法可行,但我认为可能有更好的方法. 我希望有一个方法expand()的列表,它从列表中选择一个随机元素,但每次选择该元素时,计数器都会递增.我尝试继承str以便能够添加属性,但它不起作用. 我得到的主要问题是表达式random.randint(0,len
使用 Python 3.4

我有一种方法可行,但我认为可能有更好的方法.
我希望有一个方法expand()的列表,它从列表中选择一个随机元素,但每次选择该元素时,计数器都会递增.我尝试继承str以便能够添加属性,但它不起作用.

我得到的主要问题是表达式random.randint(0,len(self)-1)和使用局部变量似乎不是Pythonic.在我添加计数器之前,我可以输入random.choice(self)

class clauses(list):
    def __init__(self):
        self.uses = []

    def __setitem__(self,key,value):
        self.uses[key]=value
        super().__setitem__(self,value)

    def __delitem__(self,key):
        del(self.uses[key])
        super().__delitem__(key)

    def append(self,value):
        self.uses.append(0)
        super().append(value)

    def extend(self,sequence):
        for x in sequence:
            self.uses.append(0)
            super().append(x)

    def expand(self):

        n = random.randint(0,len(self)-1)

        self.uses[n] += 1
        return(self[n])

解决方法

假设列表中没有重复的条目,初始化空字典以及列表应解决此问题.

将元素添加到列表时,您还可以通过myDict [element] = 0将其添加到字典中,其中myDict是已初始化的字典,element是要添加到列表中的项目.

然后,当选择该项时,您可以简单地执行:myDict [element] = 1.

处理重复条目的实例时,您可以创建字典字典,其中字典中的每个键都是一个单词,并且每个单词的嵌套字典键是,例如,重复单词的索引位置(当然的值)是真正的计数).但是,这会增加实质性的复杂性,因为当您从列表中删除项目时,您还需要更新索引位置.这个嵌套的数据结构虽然如此:{word1:{position1:count1},word2:{position1:count1,position 2:count2} ….}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读