0

このようなリストを受け取ります

selection= [u'pSphereShape1', u'mesh', u'pSphereShape2', u'mesh', u'nurbsCircleShape1', u'nurbsCurve']

so 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)

これは値を追加しますが、最初のエントリの後、次のエントリが既存の最初のエントリを上書きします...そして辞書の合計項目は1つだけになり、それが最初のエントリです...

pSphereShape1 や pSphereShape1 のような各シェイプ ノードがキーになり、メッシュまたはメッシュがそれぞれその値になるように、どのように辞書を埋める必要がありますか...

4

4 に答える 4

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)
于 2012-10-06T19:15:45.030 に答える
1

主な理由はself.objDict、すべてのステップで再定義しているため、以前の値がすべて消去されるためです。最初のステップとして、その定義をforループの上に移動してみてください。

使用している Python のバージョンは不明ですが、内包表記 (>= 2.7) を使用して辞書を作成することもできます。

pairs = zip(selObjects[0::2], selObjects[1::2])
self.objDict = {k: v for pair in pairs}

これが機能しない場合は申し訳ありません-現時点ではテストできません:) アイデアは、辞書のキーと値を含むタプルのリストを作成し、それから辞書を作成することです。

Python < 2.6 では、これは機能するはずです (pairs上記を使用):

self.objDict = dict((k, v) for pair in pairs)
于 2012-10-06T19:36:55.870 に答える
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)
于 2012-10-06T19:40:23.853 に答える
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)

上記のこのコードは、リストからキーと値のペアを生成します...

于 2012-10-06T19:34:05.427 に答える