2013-10-29 72 views
0

的实在无法摆脱这... 这里是我的Python代码:的Python - 字典全相同的值

for i in range(len(realjson)) : 
    store["Store"]={ 
      "id"   :realjson[i]['id'].strip(), 
      "retailer_id" :RETAILER_ID, 
      "name"  :find(realjson[i]["title"],">","<").strip(), 
      "address"  :realjson[i]["address"].strip(), 
      "city"  :realjson[i]["address"].split(",")[-4].strip(), 
      "province" :realjson[i]["address"].split(",")[-3].strip(), 
      "group"  :realjson[i]["address"].split(",")[-1].strip(), 
      "zip"   :realjson[i]["address"].split(",")[-2].strip(), 
      "url"   :"http://blabla.com?id="+realjson[i]["id"].strip(), 
      "lat"   :realjson[i]["lat"].strip(), 
      "lng"   :realjson[i]["lon"].strip(), 
      "phone"  :realjson[i]["telephone_number"].replace("<br />Phone Number: ","").strip() 
      } 

    stores.append(store) 
    print stores[i] 

当我打印内部列表中的for循环它工作正常。 否则,当我在循环之外打印数组时,如下所示: print stores它仅包含我为列表的整个长度重复添加的最后一个元素。 你有什么建议来帮助我! 谢谢。

回答

3

你在你的循环再利用一个可变对象:

store['Store'] 

创建循环,而不是一个新副本:

newstore = store.copy() 
newstore['Store'] = { ... } 
+0

你是对的!多么愚蠢的错误! –

0
store["Store"]={ ... } 

,如果你希望此行创建只新词典一键,那么你真正想要的是

store = {"Store": { ... }}