Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中使用json结构和匹配值解析列表_Python_Json - Fatal编程技术网

在python中使用json结构和匹配值解析列表

在python中使用json结构和匹配值解析列表,python,json,Python,Json,我有以下基于IP的城市代码: RANGES = { 'Paris': [ {'start': '10.10.0.0', 'end': '10.10.255.255'}, {'start': '192.168.1.0', 'end': '192.168.1.255'}, ], 'NYC': [ {'start': '10.12.0.0', 'end': '10.12.255.25

我有以下基于IP的城市代码:

RANGES = {
        'Paris': [
            {'start': '10.10.0.0', 'end': '10.10.255.255'},
            {'start': '192.168.1.0', 'end': '192.168.1.255'},
        ],
        'NYC': [
            {'start': '10.12.0.0', 'end': '10.12.255.255'},
            {'start': '172.16.10.0', 'end': '172.16.11.255'},
            {'start': '192.168.2.0', 'end': '192.168.2.255'},
        ]
    }

def get_city(self, ip):
        print 'Here'
        for city, ipranges in self.RANGES.items():
            for iprange in ipranges:
                if ip >= iprange['start'] and ip <= iprange['end']:
                    return city
为此,我尝试实现以下功能:

 def get_status(self, user_id, date): //should return the status
我不确定如何解析列表->匹配值->返回在处创建的
用户id的匹配组合的状态。这应该可以做到:

def get_status(user_id, date):
    for i,ele in enumerate(RECORDS): 
        if ele['user_id']==user_id and ele['created_at']==date: 
            return ele['status']

print(get_status(1, '2017-02-01T12:00:00'))
#'cancelled'
这里,我们将浏览
列表
,并使用其中的
dict
元素匹配其键(
user\u id
created\u at
),并检查值是否与所需值匹配。当然,请确保函数中的
记录值应可用。

这样做:

def get_status(user_id, date):
    for i,ele in enumerate(RECORDS): 
        if ele['user_id']==user_id and ele['created_at']==date: 
            return ele['status']

print(get_status(1, '2017-02-01T12:00:00'))
#'cancelled'
这里,我们将浏览
列表
,并使用其中的
dict
元素匹配其键(
user\u id
created\u at
),并检查值是否与所需值匹配。当然,确保函数中的
记录
值可用。

您只需执行此操作即可

>>> def get_status(user_id, date):
    for rec in RECORDS:
        if rec['user_id'] == user_id and rec['created_at'] == date:
            return rec['status']
>>> get_status(1, '2017-01-01T10:00:00')
'paying'
>>> 
你可以简单地做到这一点

>>> def get_status(user_id, date):
    for rec in RECORDS:
        if rec['user_id'] == user_id and rec['created_at'] == date:
            return rec['status']
>>> get_status(1, '2017-01-01T10:00:00')
'paying'
>>>