创建ObjectListView[python]使用的对象列表
我不熟悉类和python模块ObjectListView。 我希望使用ObjectListView创建一个文本可编辑窗口,但我的工作所基于的示例要求每个定义多列行文本项的对象都可以在如下列表中访问: 姓名=[MyClassJames,Cameron, MyClassSamantha,Jones] 请注意,引号仅在每个条目的名字和姓氏后面加上 我目前将我的名字保存在一本标准字典中,其格式如下: namesDict={詹姆斯:卡梅隆, 萨曼莎:琼斯} 我尝试将字典转换为所需的格式,如下所示:创建ObjectListView[python]使用的对象列表,python,list,objectlistview,Python,List,Objectlistview,我不熟悉类和python模块ObjectListView。 我希望使用ObjectListView创建一个文本可编辑窗口,但我的工作所基于的示例要求每个定义多列行文本项的对象都可以在如下列表中访问: 姓名=[MyClassJames,Cameron, MyClassSamantha,Jones] 请注意,引号仅在每个条目的名字和姓氏后面加上 我目前将我的名字保存在一本标准字典中,其格式如下: namesDict={詹姆斯:卡梅隆, 萨曼莎:琼斯} 我尝试将字典转换为所需的格式,如下所示: nam
namesDict = { "James":"Cameron","Samantha":"Jones"}
out = []
for key in namesDict:
out.append("MyClass(\""+key+"\",\""+namesDict[key]+"\")")
print(out)
我的代码给我留下了以下产品,除了列表中每个条目周围的单引号外,这些产品都很好:
['MyClassJames,Cameron','MyClassSamantha,Jones']
我不知道如何摆脱这些单引号。我还假设可能有一种标准技术可以从我根本不知道的词典中生成对象?引号表示您正在处理字符串文本,因为这是您传递给out列表的内容。假设MyClass构造函数有两个参数,您可以向列表中添加一个实例,如下所示:
out.append(MyClass(key, namesDict[key])
但是,这不会按您期望的方式打印,它将使用对象。_str_uuuuuuuuuuuuuuuuuuuuuuuuuuuu返回对象。_repr_uuuuuuu:
然后MyClass的实例将被整齐地打印出来:
>>> m = MyClass('James','Cameron')
>>> print(m)
MyClass("James", "Cameron")
我认为您不必担心单引号——python就是这样表示字符串的。如果你要打印输出[0],单引号就会消失。如果这样做接近成功,我会非常惊讶。appendMyClass\+key++,\+namedict[key]+\创建一个字符串文字,而name=[MyClassJames,Cameron,MyClassSamantha,Jones]看起来像是MyClass的实际实例列表。我自己不使用这个库,但我不明白为什么它需要字符串。引号表示您正在处理字符串文本,因为这是您传递给out列表的内容。假设你的MyClass构造函数有两个参数,不是吗:out.appendMyClasskey,namedict[key]?这将为namesDict中的每一项创建MyClass的实例。@roganjosh我认为您是对的,它需要一个实例列表,而不是我正在设法生成的字符串列表。那是我的问题。如何从原始词典中生成实例列表?我会用更好的措辞来更新我的问题。顺便说一句,namedict={James:Cameron,Samantha:Jones}是一个非常不寻常的数据结构。除非您需要从名字中快速找到姓氏,否则使用这样的键和值的字典是没有意义的。特别是因为名字很常见,重复的名字只会覆盖存储在名字后面的姓氏
class MyClass:
def __init__(self, first, last):
self.first = first
self.last = last
def __str__(self):
return self.__class__.__name__ + '("' + '","'.join([str(v) for k,v in vars(self).items()]) + '")'
>>> m = MyClass('James','Cameron')
>>> print(m)
MyClass("James", "Cameron")