操纵词典中的词典内容

时间:2016-11-05 02:27:37

标签: python dictionary nested

我正在接收来自不同联系人的雷达数据。每个联系人都有一个lat,lon,direction,range和time戳。并且每次点击一个联系人都会有ID,例如1,2,3等对于一个联系人,这表示随着时间的推移字典。因此,我的一个联系人的字典看起来像这样:

{1:[data @ t1], 2:[data @ t2], 3:[data @ t3]}

随着时间的推移,字典将填满,直到......但不会只有一个联系人。会有几个,也许很多。这表明字典词典:

{'SSHornblower': {1:[data], 2:[data], 3:[data]},
 'Lustania': {1:[], 2:[], 3:[]},
 'Queen Mary': {1:[], 2:[], 3:[], 4:[]}} 

我不可能事先知道我的雷达会找到多少个联系人,也许3个可能是300个。我不能提前提出所有可能的联系人和所有可能词典的名称。因此,我提出这样的想法:一旦我在较大的字典中嵌套字典,我就可以清除它并重新开始使用新的联系人。但是当我把一个嵌入另一个里面之后我清楚地说明了它,它清除了更大的字典里面的一切!有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

为填写嵌套词典,defaultdict非常有用。

假设您有一个函数radar(),它返回三个值:

  1. contact_name
  2. contact_id
  3. contact_data
  4. 然后以下人员将完成这项工作:

    from collections import defaultdict
    
    store = defaultdict(dict)
    
    while True:
        contact_name, contact_id, contact_data = radar()
        store[contact_name][contact_id] = contact_data
    

    因此,即使store中还没有新的contact_name,defaultdict的魔力将确保当您访问store时,空的嵌套dict已经存在用新钥匙。因此store[new_contact_name][new_contact_id] = new_contact_data将有效。