我收到这样的列表
selection= [u'pSphereShape1', u'mesh', u'pSphereShape2', u'mesh', u'nurbsCircleShape1', u'nurbsCurve']
所以myDic(选择)
def myDic(self,selObjects):
print "Recieved ",selObjects
print "Length ", len(selObjects)
self.objDic={}
for index,each in enumerate(reversed(selObjects)):
print index,each
if index%2==0:
key=each
elif index % 2!=0:
value=each
self.objDic[key]=value
#self.objDic.update({key:value})
print "Yo",self.objDic, len(self.objDic)
这确实会添加值,但是在第一个条目之后,下一个条目会覆盖现有的第一个条目......并且字典中的总项目只有一个,这就是第一个条目......
我应该如何填充字典,以便像pSphereShape1或pSphereShape1这样的每个形状节点成为键,网格或网格分别成为它的值......
答案 0 :(得分:1)
self.objdict没有很好的位置,这可能会起作用:
def myDic(self,selObjects):
print "Recieved ",selObjects
print "Length ", len(selObjects)
self.objDic={} # dict mus be over here or else it is overwrited to empty in every loop
for index,each in enumerate(reversed(selObjects)):
print index,each
if index%2==0:
key=each
elif index % 2!=0:
value=each
self.objDic[key]=value
#self.objDic.update({key:value})
print "Yo",self.objDic, len(self.objDic)
答案 1 :(得分:1)
主要原因是您在每个步骤中重新定义self.objDict
,这会删除所有先前的值。首先,尝试将该定义移到for
循环之上。
不确定您使用的是哪个版本的Python,但您也可以使用理解来填充字典(> = 2.7):
pairs = zip(selObjects[0::2], selObjects[1::2])
self.objDict = {k: v for pair in pairs}
道歉,如果这不起作用 - 我现在无法测试它:)想法是创建一个包含dict的键和值的元组列表,然后从中创建字典。
在Python< 2.6,这应该有效(使用上面的pairs
):
self.objDict = dict((k, v) for pair in pairs)
答案 2 :(得分:0)
好吧我自己修好了,实际上当我用模数操作键检查时应该是值是
def myDic(self,selObjects):
print "Recieved ",selObjects
print "Length ", len(selObjects)
#self.objDic={}
for index,each in enumerate(reversed(selObjects)):
##print index,each
if index%2==0:
value=each
elif index % 2!=0:
key=each
self.objDic[key]=value
#self.objDic.update({key:value})
print self.objDic, len(self.objDic)
上面的代码生成了列表中的键值对...
答案 3 :(得分:0)
使用此;它有效。
def funct(selObjects):
print "Recieved ",selObjects
print "Length ", len(selObjects)
self.objDic={}
for index,each in enumerate((selObjects)):
print index,each
if index%2==0:
key=each
elif index % 2!=0:
value=each
objDic[key]=value
#self.objDic.update({key:value})
print "Yo",objDic, len(objDic)