我有主语
main_dict={'name1':{'key1':'value1', 'key2':'value2'}, 'name2':{'key1':'value3', 'key2':'value8'} ... }
我有另外两本字典,它们带来了更多的数据,需要添加到主字典中
就像
^{pr2}$现在我想做一些循环并合并这些字典,以便 它检查相同的名字,从年龄和性别字典中获取值,并创建关键字“age”、“gender”并将它们添加到主字典中
现在我已经做到了,但我认为django可以用一种方式来帮助实现这一点:
for user in age_dict:
for key, value in main_dict.iteritems():
if key == user['name']:
value['age'] = user['age_value']
for user in gender_dict:
for key, value in main_dict.iteritems():
if key == user['name']:
value['gender'] = user['gen_value']
编辑:修改年龄和性别
dict的setdefault方法查找一个键,如果找到就返回值。如果未找到,则返回默认值,并将该默认值分配给键。在
您也可以考虑使用dict。这只是通过在找不到键时调用函数返回默认值来自动执行setdefault。在
^{pr2}$另外,正如svenmarnach敏锐地观察到的,您似乎不希望列表中的值重复。在这种情况下,set可以得到您想要的:
一般提示:如果你在做
您很可能是做错了,因为您使用字典的目的不是很明确:通过元素的键访问元素。相反,做吧
^{pr2}$如果不能确定
somedict[key]
是否存在,则使用异常。在你不必为找到合适的密钥而在字典中反复搜索。直接访问,这就是字典的用途:
预编辑案例的具体答案:
如果您确定
gender_dict
和age_dict
为每个名称提供值,那么如果其他词典中有没有条目的名称,则可以使用例外:
所以您需要使用}是字典的大小:
age_dict
和gender_dict
来充实main_dict
中键的值。好吧,给定Python guarantees average dict lookup to be constant你只受main_dict
中的键的数量的限制,你可以达到O(n)
中{一个奇特的函数以一种通用的方式来实现:
^{pr2}$即使您看到两个嵌套的循环,
main_dict
中的用户数很可能支配互补字典的数量。在相关问题 更多 >
编程相关推荐