Python 2.7 python中的Multidict不工作??如何创建它?

Python 2.7 python中的Multidict不工作??如何创建它?,python-2.7,Python 2.7,我想创建一个python多维字典:- 现在我是这样做的 multidict={} 循环中 mulitdict[i] = data 若循环运行十次,我在所有索引中得到相同的值。。 如: 我想要这样的 multidict {0 : {'name':name1, 'age' : age1}, 1: {'name':name2, 'age' : age2} 但我得到如下所示 multidict {0 : {'name':name1, 'age' : age1}, 1: {'name':name

我想创建一个python多维字典:- 现在我是这样做的 multidict={}

循环中

   mulitdict[i] = data
若循环运行十次,我在所有索引中得到相同的值。。 如: 我想要这样的

multidict {0 : {'name':name1, 'age' : age1}, 1: {'name':name2, 'age' : age2}
但我得到如下所示

multidict {0 : {'name':name1, 'age' : age1}, 1: {'name':name1, 'age' : age1}
我也尝试了默认的dict…但每次我在所有索引中都得到相同的值。有什么问题

试用代码:

有什么有效的方法可以做到这一点吗

multidict = {}
for j in range(10):
    s = {}
    s['name'] = raw_input()
    s['age'] = input()
    multidict[j] = s

这将获得所需的结果

听起来您正在将相同的
数据
dict分配给外部
多dict
的每个值,并且只需修改它在循环中每次传递时保持的值。这将导致所有的值看起来都相同,与上次通过循环的值相同

您可能需要确保创建一个单独的dictionary对象来保存每个值的数据。一个粗略的解决方法可能是用
multidict[i]=dict(data)
替换
multidict[i]=data
,但如果您知道
数据是如何创建的,您可能可以做一些更优雅的事情

编辑:查看您的代码,以下是解决问题的方法:

csv_parsed_data2 = {}
with open('1112.txt') as infile:
  i =0
  data = {}                             # start with empty data dict
  for lineraw in infile:
      line = lineraw.strip()
      if 'sample1 ' in line:
          ### TO GET SOURCE ROUTER NAME  ###
          data['sample1'] = line[8:]                 
      elif 'sample2- ' in line:
          ### TO GET DESTINATION ROUTER NAME  ###
          data['sample2'] = line[13:]
      elif 'sample3' in line:
              ### TO GET MIN,MAX,MEAN AND STD VALUES  ###
              min_value = line.replace("ms"," ")
              min_data = min_value.split(" ")
              data['sample3'] = min_data[1]
              csv_parsed_data2[i] = data
              data = {}          # after saving a reference to the dict, reinitialize it
              i = i + 1
              print i,'::',csv_parsed_data2,'--------------'
print csv_parsed_data2,' all index has same value'

为了理解到底发生了什么,考虑一下这个简单的情况,我在字典中保存了一个引用,当它有一些旧的值:

my_dict = { "foo": "bar" }
some_ref = my_dict

print some_ref["foo"] # prints "bar"    

my_dict["foo"] = "baz"

print some_ref["foo"] # prints "baz", since my_dict and some_ref refer to the same object
print some_ref is d   # prints "True", confirming that fact

在您的代码中,
my_dict
data
some_ref
都是
csv\u解析的数据2
的值。它们最终都会成为同一个对象的引用,该对象将保存最后分配给
数据
的值。

您尝试的代码在哪里?非常感谢blcknght…您能再次向我解释一下我没有得到,也是一个很好的方法it@Python_Dude:更新了对代码的修复和更多解释。已理解..但我无法重新初始化数据。。。它有一些值,所以我使用multidict[i]=dict(data)…它是正确的。。。谢谢
my_dict = { "foo": "bar" }
some_ref = my_dict

print some_ref["foo"] # prints "bar"    

my_dict["foo"] = "baz"

print some_ref["foo"] # prints "baz", since my_dict and some_ref refer to the same object
print some_ref is d   # prints "True", confirming that fact