属性只能在嵌套的for循环中更新一次

我是Python新手,我的第一个Python脚本有一些问题。我有一个数据列表,其.tag属性最初设置为0。

lst = [a, b, c, d, e, f]
for x in lst:
    x.tag = 0

然后,我获得了真实标签和列表中相应元素索引的结果。它存储在词典列表中。显然,列表中的某些元素具有多个标签。现在,我想更新列表中所有元素的标签,以便每个元素都具有诸如的标签属性f.tag = [2,3,4,5]我写了以下脚本。这个想法是循环遍历每个字典并获得索引和标签。然后循环遍历每个索引,并检查列表的相应元素是否具有标签=0。如果是,请将0更改为新标签作为单个元素列表;否则,将0更改为新标签。如果不是,则表示它已经被更新过,因此只需附加新标签即可。我的脚本如下:

results = [{'indices':(2), 'tag':0}, {'indices':(1,3), 'tag':1}, {'indices':(0,3,4,5), 'tag':2}, {'indices':(4,5), 'tag':3}, {'indices':(1,5), 'tag':4}, {'indices':(5), 'tag':5}]

for dct in results:
    indices = dct['indices']
    t = dct['tag']
    for i in indices:
        if lst[i].tag == 0:
            lst[i].tag = [t]
        elif t not in lst[i].tag:
            print('The code ever goes here')
            lst[i].tag.append(t) 

但是,运行此命令后,我再也看不到“代码永远在这里”被打印出来。然后,我检查列表,我只看到所有具有非零实数标签的元素都被更新,但是只有一次。这意味着不能再次更新元素的标签。绝对不行,因为有些元素具有多个标签并且需要不断更新。我不知道我的代码中可能出了什么问题。

宇宙

逻辑相当复杂,但是我认为它确实可以实现您想要的功能。我怀疑问题出在您的输入上results尤其:

  • 对于像的单元素索引(2),请将其更改为(2,)以便可以正确迭代。(2)只是求值2而不能迭代。
  • 最后一个元素应{'indices':(5,), 'tag':5}{'5':, 'tag':5}

更改这些内容后,我可以运行一个最小的工作示例:

class A:
    def __init__(self):
        self.tag = 0

lst = [A() for _ in range(6)]
results = [
    {"indices": (2,), "tag": 0},
    {"indices": (1, 3), "tag": 1},
    {"indices": (0, 3, 4, 5), "tag": 2},
    {"indices": (4, 5), "tag": 3},
    {"indices": (1, 5), "tag": 4},
    {"indices": (5,), "tag": 5},
]

for dct in results:
    indices = dct["indices"]
    t = dct["tag"]
    for i in indices:
        if lst[i].tag == 0:
            lst[i].tag = [t]
        elif t not in lst[i].tag:
            print("The code does go here")
            lst[i].tag.append(t)

其次是

for x in lst:
  print(x.tag)
>
[2]
[1, 4]
[0]
[1, 2]
[2, 3]
[2, 3, 4, 5]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么循环中的功能只能运行一次?

来自分类常见问题

如何仅从嵌套的for循环中打印结果一次

来自分类Dev

XSD指定一个只能在XML中使用一次的属性

来自分类Dev

为什么我的循环只能在第一次迭代中正常工作?

来自分类Dev

XSD指定只能在XML中使用一次的属性

来自分类Dev

属性“样式”只能设置一次

来自分类Dev

TimerTask类只能在Java中运行一次

来自分类Dev

按钮OnClickListener只能在Android上运行一次

来自分类Dev

线程只能在Django Channels中启动一次

来自分类Dev

@keyframes动画只能在第一次使用

来自分类Dev

只能在CUDA上修改一次设备内存

来自分类Dev

CSS动画只能在第一次使用

来自分类Dev

只能在 IEnumerable 上枚举一次

来自分类Dev

在FOR循环中仅运行一次IF

来自分类Dev

如何仅在Python的嵌套循环中迭代一次列表

来自分类Dev

jQuery-在嵌套的每个循环中仅迭代一次

来自分类Dev

循环应运行4次,但只能执行一次

来自分类Dev

嵌套的for循环仅执行一次

来自分类Dev

Jquery从元素中删除属性(循环中)仅在第一次工作

来自分类Dev

Flutter中的setState()方法直到for循环中的最后一次调用才更新视图

来自分类Dev

xslt:在for-each循环中仅循环一次

来自分类Dev

在永久循环或无效循环中执行一次(一次)吗?

来自分类Dev

python中的嵌套循环不会循环超过一次

来自分类Dev

嵌套的for循环仅在Javascript执行一次外循环

来自分类Dev

在for循环中仅调用一次事件

来自分类Dev

for()循环中的下一次迭代之前的wait()

来自分类Dev

解析一次仅在循环中使用的代码

来自分类Dev

在While循环中使用随机一次

来自分类Dev

在forEach循环中跳过第一次迭代

Related 相关文章

热门标签

归档