Python:将文件的行与内存中字典的键进行比较

2024-05-29 12:05:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将json格式文件jadata dic(每行都是一个字典)中的键“rrname”的值与已加载到内存中的字典d的键进行比较

这是我的密码: 导入simplejson

ap = '/data/data/2014/A.1/ap.txt'
ddb = '/data/data/2014/A.1/test'


d={}
f = open(ap,'r')
g = open(ddb,'r')

for line in f:
    domain,bl_date= line.split('|')
    d[domain]=bl_date

for line in g:
    line=line.strip('')
    try:
        jdata = simplejson.loads(line)
        if jdata.get('rrname') == d.keys():
            print rrname
    except:
        raise

这是我的ddb文件:

{"rrname": "bba186684.alshamil.net.ae.", "time_last": 1389295255, "time_first": 1389241418,  }
{"rrname": "bba186686.alshamil.net.ae.", "time_last": 1390910891, "time_first": 1390910891}
{"rrname": "0001ewm.rcomhost.com", "time_last": 1390147425, "time_first": 1390124988}

以下是ap文件:

0001elk.rcomhost.com|1391726703
0001ewm.rcomhost.com|1393472522
0001qz6.wcomhost.com|1399977648

当我运行这段代码时,它找不到相似之处,尽管有相似之处。有人能帮我吗


Tags: incomfordata字典timelineopen
1条回答
网友
1楼 · 发布于 2024-05-29 12:05:49
jdata.get('rrname') == d.keys()

总是会失败==左边的单个条目不等于右边的所有条目

相反,检查是否:

jdata.get('rrname') in d

in运算符查找左侧是否包含在右侧。使用d而不是d.keys()作为右侧对性能很重要,因为在字典中检查包含比在列表中检查要快得多(就像在python2中.keys,我猜这就是您正在使用的,即使您没有告诉我们!,基于print:-)的语法

相关问题 更多 >

    热门问题