2015-02-03 3 views
0

У меня есть ниже сценарий, в котором у меня есть словарь d с d[domain] датой и dns_dic словаря с domain как ключи и rdata = ip в качестве значения.Как я могу добавить словарь внутри существующего словаря, Python

Expected result: 

Мне интересно, как я могу сделать ключ словаря dns_dic в tuple домена, дата (ключевые значения словаря г) и значение dns_dic как ip, как
dns_dic = {(domain1,date1):ip1,(domain2,date2):ip2} т.д.

dns_dic = defaultdict(set) 
d = {domain1:date1,domain2:date2, ..} 

    if domain in d: 
     for i in d[domain]: 
      if jdata.get('time_first') <= i <= jdata.get('time_last'): 
      dns_dic[dom].update(jdata.get('rdata', [])) 

Это как jdata выглядит следующим образом:

{"rrname":"c.000a.biz.","time_last":1400243400,"time_first":1388645949,"rdata":["50.21.180.100"]} 
{"rrname":"c.000a.biz.","time_last":1389133600,"time_first":1389133600,"rdata":["50.21.180.100"]} 
{"rrname": "0001211.com.","time_last":1407101755,"time_first":1389074193,"rdata":["50.21.180.100"]} 
+0

Что такое 'dom'? Если это «список», он может быть добавлен в 'tuple' с помощью' tuple (dom) 'перед добавлением его в качестве ключа. –

ответ

2

Отвечая на Ваш вопрос по примеру, это простой способ добавить tuple, как dict ключ:

# create a dict 
d = {} 
# add tuple as key with some value 
d[('some domain', 'some date')] = 'some ip' 
print d 

Выход:

{('some domain', 'some date'): 'some ip'} 

бросить list в tuple использование tuple(lst) где lst ваш список.

0

вы можете получить tuples из (key, value) с dict.items() метод.

вы можете сделать Somthing как:

for item in d.items(): # item is (key,value) tuple 
    domain,date = item 
    for jd in jdata: 
     if jd.get('time_first') <= date <= jd.get('time_last'): 
      dns_dic[item] = jd.get('rdata',[]) 

предполагающей переменные как

dns_dic = {} 
d = {"domain1":1389074195,"domain2":1388645951,"domain3":1389133601} 

jdata = [ 
{"rrname":"c.000a.biz.","time_last":1400243400,"time_first":1388645949, 
                "rdata":["50.21.180.100"]}, 
{"rrname":"c.000a.biz.","time_last":1389133600,"time_first":1389133600, 
                "rdata":["50.21.180.100"]}, 
{"rrname": "0001211.com.","time_last":1407101755,"time_first":1389074193, 
                "rdata":["50.21.180.100"]}, 
] 
Смежные вопросы