检查dict的复数值是否符合某些条件

2024-04-19 10:51:12 发布

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

我有一个python字典,它的值是列表的列表:

dictionary={'sca4': [['BM1', 17], ['BM2', 33]], 'sca6': [['GM2', 46], ['GM2', 67], ['BM2', 17]]}

请注意,一个数字可以用不同的键重复,在这种情况下是17。你知道吗

我有一个文本文件,格式如下:

sca4 15 25
sca4 20 32
sca6 45 62

我将文本文件解析如下:

for line in textfile.split("\n"):
        if not line.strip():
            continue
        col1, col2, col3 = line.strip().split(" ")

我想看看字典中每个列表的第二个元素(即17、33、46、67)是否都在文本文件的col2和col3的间隔范围内,代码如下:

for value_list in dictionary.get(col1, []):
    if int(col2) <= value_list[1] <= int(col3):
      print "withinrange"
    else:
      print "outsiderange"

要获得输出:

wihtinrange
outsiderange
withinrange
outsiderange

我没有得到任何错误,也没有任何输出。如果有人能评论我的代码以及我如何调试它,那就太好了。你知道吗


Tags: in列表fordictionary字典linecol2col3
3条回答

实际上,你的程序是这样处理数据的:

'sca4':
[['BM1', 17],  in interval(15, 25) -> "correct"
 ['BM2', 33]], in interval(15, 25) -> "wrong"
'sca4':
[['BM1', 17],  in interval(20, 32)  -> "wrong"
 ['BM2', 33]], in interval(20, 32) -> "wrong"

'sca6': 
[['GM2', 46], in interval(45, 62) -> "correct"
 ['GM2', 67]] in interval(45, 62) -> "wrong"

已添加另一个答案,并在上一个已发布答案的评论中规定了额外要求:

def printList(l, dict1):
    for l1 in l:
        if dict1.has_key(l1):
            print "withinrange"
        else:
            print "outsiderange"

file = open("test1.txt")
textfile = file.readlines()
dict={'sca4': [['BM1', 17], ['BM2', 33]], 'sca6': [['GM2', 46], ['GM2', 67], ['BM',17]]}
dict1 = {}
l =[]
key = ''
for line in textfile:
    if not line.strip():
        continue
    col1, col2, col3 = line.strip().split(" ")
    if not (key == col1):
        printList(l, dict1)
        l =[]
        key = col1
        dict1 = {}
    for value_list in dict.get(col1, []):
        #print value_list[1]
        if not (value_list[1] in l):
            l.append(value_list[1])
        if ((int(col2) <= value_list[1]) and (value_list[1] <= int(col3))):
            dict1[value_list[1]] = 'correct'
printList(l, dict1)

请尝试以下代码:

file = open("test1.txt")
textfile = file.readlines()
dict={'sca4': [['BM1', 17], ['BM2', 33]], 'sca6': [['GM2', 46], ['GM2', 67]]}
dict1 = {}
l =[]
for line in textfile:
    if not line.strip():
        continue
    col1, col2, col3 = line.strip().split(" ")
    for value_list in dict.get(col1, []):
        #print value_list[1]
        if not (value_list[1] in l):
            l.append(value_list[1])
        if ((int(col2) <= value_list[1]) and (value_list[1] <= int(col3))):
            dict1[value_list[1]] = 'correct'
for l1 in l:
    if dict1.has_key(l1):
        print "withinrange"
    else:
        print "outsiderange"

相关问题 更多 >