我有一个函数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键和值?
答案 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名称。