簡體   English   中英

如何在現有字典中添加字典,Python

[英]How can I add a dictionary inside an existing dictionary ,Python

我有以下腳本,其中我具有帶有d[domain]日期的字典d和具有以domain為鍵且以rdata = ip為值的dns_dic字典。

Expected result:

我想知道如何將字典dns_dic的鍵dns_dic為domain的tuple ,日期(字典d的鍵值)並將dns_dicdns_dicip ,例如
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"]}

通過示例回答您的問題,這是將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'}

要將listtuple使用tuple(lst) ,其中lst是您的列表。

您可以使用dict.items()方法獲取(key, value) tuples

你可以做這樣的事情:

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"]},
 ]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM