Python 3.x 将实例名称用作dict值,将对象属性用作dict键时出错

Python 3.x 将实例名称用作dict值,将对象属性用作dict键时出错,python-3.x,Python 3.x,我想将精品dict创建为类型dict,它将精品对象标记为不同的类型。 例:b1、b2、b3是三个精品店对象,其中b1、b2属于“衬衫”类型,b3属于“连衣裙”类型。 然后dict字典的格式中有值 {'shirt':b1,b2,'dress':b3} 这是我写的代码 class Boutique: def __init__(self, boutiqueid, boutiquename, boutiquetype, boutiquerating, points): self.

我想将精品dict创建为类型dict,它将精品对象标记为不同的类型。 例:b1、b2、b3是三个精品店对象,其中b1、b2属于“衬衫”类型,b3属于“连衣裙”类型。 然后dict字典的格式中有值
{'shirt':b1,b2,'dress':b3}
这是我写的代码

class Boutique:
    def __init__(self, boutiqueid, boutiquename, boutiquetype, boutiquerating, points):
        self.boutiqueid = boutiqueid
        self.boutiquename = boutiquename
        self.boutiquetype = boutiquetype
        self.boutiquerating = boutiquerating
        self.points = points
   
class OnlineBoutique:
    def __init__(self, *argv):
        self.boutiqueDict = {}
        for arg in argv:
            if arg.boutiquetype not in self.boutiqueDict.keys():
                self.boutiqueDict = {arg.boutiquetype : list(arg)}
            else:
                (self.boutiqueDict[arg.boutiquetype]).append(arg)


这就是我得到的错误

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "hello.py", line 14, in __init__
    self.boutiqueDict = {arg.boutiquetype : list(arg)}
TypeError: 'Boutique' object is not iterable
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“hello.py”,第14行,在__
self.finitedict={arg.finitetype:list(arg)}
TypeError:“精品”对象不可编辑

我不确定它尝试迭代的位置/原因。

OnlineBoutile上面的代码中,将传递精品店的多个实例,但问题是您试图将此类实例转换为带行的列表

list(arg)
很明显,您的精品类没有覆盖\uuuuuuuuuuuuuuuiter()方法

甚至这也与你最初的想法背道而驰,因为你应该做的是

self.boutiqueDict[arg.boutiquetype] = arg
既然你说这篇文章里的裙子应该是{'shirt':b1,b2}

因此,现在的情况将是这样的

        for arg in argv:
            if arg.boutiquetype not in self.boutiqueDict.keys():
                self.boutiqueDict[arg.boutiquetype] = arg
            else:
                (self.boutiqueDict[arg.boutiquetype]).append(arg)

因此,如果类型键尚未出现,则会创建它,否则新值会附加到已存在的键上

是,感谢帮助人员,如果它回答了您的问题,请将其标记为已接受的答案