将字典添加到 python 中的另一个字典
Add dictionary to another dictionary in python
这是我在另一个字典中添加字典的代码
dict_temp = {}
logs = {}
for d in e:
count +=1
dict_temp['email']= d["sent_to"]
dict_temp['log_id']= d["unique_arguments"]
print dict_temp
logs[count] = dict_temp
dict_temp.clear()
print logs
字典 dict_temp 构建得非常完美,但是当我将这本字典添加到日志 dictonar 中时,打印时查看字典,它是空的..
这是输出;
{'log_id': u'log_1_taqi.official@gmail.com', 'email': u'taqi.official@gmail.com'}
{'log_id': u'log_1_taqi.hass@cogilent.com', 'email': u'taqi.hass@cogilent.com'}
{'log_id': u'log_1_taqi.official@gmailllllll.com', 'email': u'taqi.official@gmailllllll.com'}
{'log_id': u'log_2_taqi.official@gmail.com', 'email': u'taqi.official@gmail.com'}
{'log_id': u'log_2_taqi.hass@cogilent.com', 'email': u'taqi.hass@cogilent.com'}
{'log_id': u'log_2_taqi.official@gmailllllll.com', 'email': u'taqi.official@gmailllllll.com'}
{'log_id': u'log_4_taqi.official@gmail.com', 'email': u'taqi.official@gmail.com'}
{'log_id': u'log_4_taqi.hass@cogilent.com', 'email': u'taqi.hass@cogilent.com'}
{'log_id': u'log_4_taqi.official@gmailllllll.com', 'email': u'taqi.official@gmailllllll.com'}
{'log_id': u'log_5_taqi.official@gmail.com', 'email': u'taqi.official@gmail.com'}
{'log_id': u'log_5_taqi.hass@cogilent.com', 'email': u'taqi.hass@cogilent.com'}
{'log_id': u'log_5_taqi.official@gmailllllll.com', 'email': u'taqi.official@gmailllllll.com'}
{'log_id': u'log_6_taqi.official@gmail.com', 'email': u'taqi.official@gmail.com'}
{'log_id': u'log_6_taqi.hass@cogilent.com', 'email': u'taqi.hass@cogilent.com'}
{'log_id': u'log_6_taqi.official@gmailllllll.com', 'email': u'taqi.official@gmailllllll.com'}
{'log_id': u'log_7_taqi.official@gmail.com', 'email': u'taqi.official@gmail.com'}
{'log_id': u'log_7_taqi.hass@cogilent.com', 'email': u'taqi.hass@cogilent.com'}
{'log_id': u'log_7_taqi.official@gmailllllll.com', 'email': u'taqi.official@gmailllllll.com'}
{'log_id': u'log_8_taqi.official@gmail.com', 'email': u'taqi.official@gmail.com'}
{'log_id': u'log_8_taqi.hass@cogilent.com', 'email': u'taqi.hass@cogilent.com'}
{'log_id': u'log_8_taqi.official@gmailllllll.com', 'email': u'taqi.official@gmailllllll.com'}
{1: {}, 2: {}, 3: {}, 4: {}, 5: {}, 6: {}, 7: {}, 8: {}, 9: {}, 10: {}, 11: {}, 12: {}, 13: {}, 14: {}, 15: {}, 16: {}, 17: {}, 18: {}, 19: {}, 20: {}, 21: {}}
您正在一遍又一遍地添加相同的字典对象。您没有添加副本。因此,您最终会看到对该字典的所有引用都显示相同的内容:
>>> inner = {}
>>> outer = {}
>>> inner['foo'] = 'bar'
>>> outer['inner_key'] = inner
>>> outer
{'inner_key': {'foo': 'bar'}}
>>> inner['foo'] = 'baz'
>>> outer
{'inner_key': {'foo': 'baz'}}
>>> inner.clear()
>>> outer
{'inner_key': {}}
>>> outer['another_key'] = inner
>>> outer
{'another_key': {}, 'inner_key': {}}
>>> inner['foo'] = 'spam'
>>> outer
{'another_key': {'foo': 'spam'}, 'inner_key': {'foo': 'spam'}}
请注意在打印 outer
字典时如何反映对 inner
的任何更改,因为两者共享同一个对象。添加更多的键指向这个字典只会创建更多的引用,而不是副本:
>>> id(inner), id(outer['inner_key']), id(outer['another_key'])
(4413825104, 4413825104, 4413825104)
>>> inner is outer['inner_key']
True
>>> inner is outer['another_key']
True
使用新词典:
logs = {}
for d in e:
count +=1
new_dict = {'email': d["sent_to"], 'log_id': d["unique_arguments"]}
logs[count] = new_dict
另一种选择是使用 dict.copy()
创建字典的(浅)副本,但是由于您要完全替换两个键 无论如何 所以真的没有意义在这里这样做。
这是我在另一个字典中添加字典的代码
dict_temp = {}
logs = {}
for d in e:
count +=1
dict_temp['email']= d["sent_to"]
dict_temp['log_id']= d["unique_arguments"]
print dict_temp
logs[count] = dict_temp
dict_temp.clear()
print logs
字典 dict_temp 构建得非常完美,但是当我将这本字典添加到日志 dictonar 中时,打印时查看字典,它是空的.. 这是输出;
{'log_id': u'log_1_taqi.official@gmail.com', 'email': u'taqi.official@gmail.com'}
{'log_id': u'log_1_taqi.hass@cogilent.com', 'email': u'taqi.hass@cogilent.com'}
{'log_id': u'log_1_taqi.official@gmailllllll.com', 'email': u'taqi.official@gmailllllll.com'}
{'log_id': u'log_2_taqi.official@gmail.com', 'email': u'taqi.official@gmail.com'}
{'log_id': u'log_2_taqi.hass@cogilent.com', 'email': u'taqi.hass@cogilent.com'}
{'log_id': u'log_2_taqi.official@gmailllllll.com', 'email': u'taqi.official@gmailllllll.com'}
{'log_id': u'log_4_taqi.official@gmail.com', 'email': u'taqi.official@gmail.com'}
{'log_id': u'log_4_taqi.hass@cogilent.com', 'email': u'taqi.hass@cogilent.com'}
{'log_id': u'log_4_taqi.official@gmailllllll.com', 'email': u'taqi.official@gmailllllll.com'}
{'log_id': u'log_5_taqi.official@gmail.com', 'email': u'taqi.official@gmail.com'}
{'log_id': u'log_5_taqi.hass@cogilent.com', 'email': u'taqi.hass@cogilent.com'}
{'log_id': u'log_5_taqi.official@gmailllllll.com', 'email': u'taqi.official@gmailllllll.com'}
{'log_id': u'log_6_taqi.official@gmail.com', 'email': u'taqi.official@gmail.com'}
{'log_id': u'log_6_taqi.hass@cogilent.com', 'email': u'taqi.hass@cogilent.com'}
{'log_id': u'log_6_taqi.official@gmailllllll.com', 'email': u'taqi.official@gmailllllll.com'}
{'log_id': u'log_7_taqi.official@gmail.com', 'email': u'taqi.official@gmail.com'}
{'log_id': u'log_7_taqi.hass@cogilent.com', 'email': u'taqi.hass@cogilent.com'}
{'log_id': u'log_7_taqi.official@gmailllllll.com', 'email': u'taqi.official@gmailllllll.com'}
{'log_id': u'log_8_taqi.official@gmail.com', 'email': u'taqi.official@gmail.com'}
{'log_id': u'log_8_taqi.hass@cogilent.com', 'email': u'taqi.hass@cogilent.com'}
{'log_id': u'log_8_taqi.official@gmailllllll.com', 'email': u'taqi.official@gmailllllll.com'}
{1: {}, 2: {}, 3: {}, 4: {}, 5: {}, 6: {}, 7: {}, 8: {}, 9: {}, 10: {}, 11: {}, 12: {}, 13: {}, 14: {}, 15: {}, 16: {}, 17: {}, 18: {}, 19: {}, 20: {}, 21: {}}
您正在一遍又一遍地添加相同的字典对象。您没有添加副本。因此,您最终会看到对该字典的所有引用都显示相同的内容:
>>> inner = {}
>>> outer = {}
>>> inner['foo'] = 'bar'
>>> outer['inner_key'] = inner
>>> outer
{'inner_key': {'foo': 'bar'}}
>>> inner['foo'] = 'baz'
>>> outer
{'inner_key': {'foo': 'baz'}}
>>> inner.clear()
>>> outer
{'inner_key': {}}
>>> outer['another_key'] = inner
>>> outer
{'another_key': {}, 'inner_key': {}}
>>> inner['foo'] = 'spam'
>>> outer
{'another_key': {'foo': 'spam'}, 'inner_key': {'foo': 'spam'}}
请注意在打印 outer
字典时如何反映对 inner
的任何更改,因为两者共享同一个对象。添加更多的键指向这个字典只会创建更多的引用,而不是副本:
>>> id(inner), id(outer['inner_key']), id(outer['another_key'])
(4413825104, 4413825104, 4413825104)
>>> inner is outer['inner_key']
True
>>> inner is outer['another_key']
True
使用新词典:
logs = {}
for d in e:
count +=1
new_dict = {'email': d["sent_to"], 'log_id': d["unique_arguments"]}
logs[count] = new_dict
另一种选择是使用 dict.copy()
创建字典的(浅)副本,但是由于您要完全替换两个键 无论如何 所以真的没有意义在这里这样做。