函数返回形成不良的字典

时间:2015-12-23 00:50:46

标签: python python-2.7

我有一个函数get_test_data()应该给我一个字典

return [{headers[test_name_index - 1]: test_name[i], headers[test_data_index - 1]: test_data[i]} for i in range(len(test_name))]

返回[{u'Test1': u'1', u'Test2': u'2'}, {u'Test1': u'3', u'Test2': u'4'}]

除非我尝试访问值...

test = {}
test.update(get_test_data())
print test
print test['Test1'][0]
print test.keys()
print test.values()

我明白了......

{u'Test1': u'Test2'}
T
[u'Test1']
[u'Test2']

我想要的......

{'Test1': 1, 'Test2': 2}, {'Test1': 3, 'Test2': 4}
1
[u'Test1', u'Test2']
[u'1','2','3','4']

如何设置我的函数的最后一个return语句,以便我可以正确访问dict键和值?

1 个答案:

答案 0 :(得分:2)

如果您想要使用enumerate的词典,那么

6列表中的更新只会保留覆盖,因为您有重复的密钥:

test = {}
test.update(enumerate(get_test_data()))

那会给你:

{0: {u'Test1': u'1', u'Test2': u'2'}, 1: {u'Test1': u'3', u'Test2': u'4'}}

其中索引是外键。您不能拥有重复的密钥,并且两个密钥都具有相同的密钥,因此似乎没有合理的理由来确定密钥的来源。

除了枚举之外,您还可以使用dict comp:

test = {"dict_{}".format(d["Test2"]) : d for d in get_test_data()}

...拥有外部词典的str名称。