‘复杂变简单‘的代码例子

把复杂问题简单化

1 列出【部分】【最简单的】原始数据,和想要的数据
2 要清楚每一步在干嘛 log log=print

provice = [{
    "name": "北京市",
    "id": "110000000000"
}, {
    "name": "天津市",
    "id": "120000000000"
}, {
    "name": "河北省",
    "id": "130000000000"
}, {
    "name": "山西省",
    "id": "140000000000"
}, {
    "name": "内蒙古自治区",
    "id": "150000000000"
}, {
    "name": "辽宁省",
    "id": "210000000000"
}, {
    "name": "吉林省",
    "id": "220000000000"
}, {
    "name": "黑龙江省",
    "id": "230000000000"
}, {
    "name": "上海市",
    "id": "310000000000"
}, {
    "name": "江苏省",
    "id": "320000000000"
}, {
    "name": "浙江省",
    "id": "330000000000"
}, {
    "name": "安徽省",
    "id": "340000000000"
}, {
    "name": "福建省",
    "id": "350000000000"
}, {
    "name": "江西省",
    "id": "360000000000"
}, {
    "name": "山东省",
    "id": "370000000000"
}, {
    "name": "河南省",
    "id": "410000000000"
}, {
    "name": "湖北省",
    "id": "420000000000"
}, {
    "name": "湖南省",
    "id": "430000000000"
}, {
    "name": "广东省",
    "id": "440000000000"
}, {
    "name": "广西壮族自治区",
    "id": "450000000000"
}, {
    "name": "海南省",
    "id": "460000000000"
}, {
    "name": "重庆市",
    "id": "500000000000"
}]

ccity = {
    "110000000000": [
        {
            "city": "市辖区",
            "name": "东城区",
            "id": "110101000000"
        },
        {
            "city": "市辖区",
            "name": "西城区",
            "id": "110102000000"
        },
        {
            "city": "市辖区",
            "name": "朝阳区",
            "id": "110105000000"
        },
        {
            "city": "市辖区",
            "name": "丰台区",
            "id": "110106000000"
        },
        {
            "city": "市辖区",
            "name": "石景山区",
            "id": "110107000000"
        },
        {
            "city": "市辖区",
            "name": "海淀区",
            "id": "110108000000"
        },
        {
            "city": "市辖区",
            "name": "门头沟区",
            "id": "110109000000"
        },
        {
            "city": "市辖区",
            "name": "房山区",
            "id": "110111000000"
        },
        {
            "city": "市辖区",
            "name": "通州区",
            "id": "110112000000"
        },
        {
            "city": "市辖区",
            "name": "顺义区",
            "id": "110113000000"
        },
        {
            "city": "市辖区",
            "name": "昌平区",
            "id": "110114000000"
        },
        {
            "city": "市辖区",
            "name": "大兴区",
            "id": "110115000000"
        },
        {
            "city": "市辖区",
            "name": "怀柔区",
            "id": "110116000000"
        },
        {
            "city": "市辖区",
            "name": "平谷区",
            "id": "110117000000"
        },
        {
            "city": "市辖区",
            "name": "密云区",
            "id": "110118000000"
        },
        {
            "city": "市辖区",
            "name": "延庆区",
            "id": "110119000000"
        }
    ],
    "120000000000": [
        {
            "city": "市辖区",
            "name": "和平区",
            "id": "120101000000"
        },
        {
            "city": "市辖区",
            "name": "河东区",
            "id": "120102000000"
        },
        {
            "city": "市辖区",
            "name": "河西区",
            "id": "120103000000"
        },
        {
            "city": "市辖区",
            "name": "南开区",
            "id": "120104000000"
        },
        {
            "city": "市辖区",
            "name": "河北区",
            "id": "120105000000"
        },
        {
            "city": "市辖区",
            "name": "红桥区",
            "id": "120106000000"
        },
        {
            "city": "市辖区",
            "name": "东丽区",
            "id": "120110000000"
        },
        {
            "city": "市辖区",
            "name": "西青区",
            "id": "120111000000"
        },
        {
            "city": "市辖区",
            "name": "津南区",
            "id": "120112000000"
        },
        {
            "city": "市辖区",
            "name": "北辰区",
            "id": "120113000000"
        },
        {
            "city": "市辖区",
            "name": "武清区",
            "id": "120114000000"
        },
        {
            "city": "市辖区",
            "name": "宝坻区",
            "id": "120115000000"
        },
        {
            "city": "市辖区",
            "name": "滨海新区",
            "id": "120116000000"
        },
        {
            "city": "市辖区",
            "name": "宁河区",
            "id": "120117000000"
        },
        {
            "city": "市辖区",
            "name": "静海区",
            "id": "120118000000"
        },
        {
            "city": "市辖区",
            "name": "蓟州区",
            "id": "120119000000"
        },
        {
            "city": "市辖区",
            "name": "和平区",
            "id": "120101000000"
        },
        {
            "city": "市辖区",
            "name": "河东区",
            "id": "120102000000"
        },
        {
            "city": "市辖区",
            "name": "河西区",
            "id": "120103000000"
        },
        {
            "city": "市辖区",
            "name": "南开区",
            "id": "120104000000"
        },
        {
            "city": "市辖区",
            "name": "河北区",
            "id": "120105000000"
        },
        {
            "city": "市辖区",
            "name": "红桥区",
            "id": "120106000000"
        },
        {
            "city": "市辖区",
            "name": "东丽区",
            "id": "120110000000"
        },
        {
            "city": "市辖区",
            "name": "西青区",
            "id": "120111000000"
        },
        {
            "city": "市辖区",
            "name": "津南区",
            "id": "120112000000"
        },
        {
            "city": "市辖区",
            "name": "北辰区",
            "id": "120113000000"
        },
        {
            "city": "市辖区",
            "name": "武清区",
            "id": "120114000000"
        },
        {
            "city": "市辖区",
            "name": "宝坻区",
            "id": "120115000000"
        },
        {
            "city": "市辖区",
            "name": "滨海新区",
            "id": "120116000000"
        },
        {
            "city": "市辖区",
            "name": "宁河区",
            "id": "120117000000"
        },
        {
            "city": "市辖区",
            "name": "静海区",
            "id": "120118000000"
        },
        {
            "city": "市辖区",
            "name": "蓟州区",
            "id": "120119000000"
        }
    ],
    "130000000000": [
        {
            "province": "河北省",
            "name": "石家庄市",
            "id": "130100000000"
        },
        {
            "province": "河北省",
            "name": "唐山市",
            "id": "130200000000"
        },
        {
            "province": "河北省",
            "name": "秦皇岛市",
            "id": "130300000000"
        },
        {
            "province": "河北省",
            "name": "邯郸市",
            "id": "130400000000"
        },
        {
            "province": "河北省",
            "name": "邢台市",
            "id": "130500000000"
        },
        {
            "province": "河北省",
            "name": "保定市",
            "id": "130600000000"
        },
        {
            "province": "河北省",
            "name": "张家口市",
            "id": "130700000000"
        },
        {
            "province": "河北省",
            "name": "承德市",
            "id": "130800000000"
        },
        {
            "province": "河北省",
            "name": "沧州市",
            "id": "130900000000"
        },
        {
            "province": "河北省",
            "name": "廊坊市",
            "id": "131000000000"
        },
        {
            "province": "河北省",
            "name": "衡水市",
            "id": "131100000000"
        }
    ],
    "140000000000": [
        {
            "province": "山西省",
            "name": "太原市",
            "id": "140100000000"
        },
        {
            "province": "山西省",
            "name": "大同市",
            "id": "140200000000"
        },
        {
            "province": "山西省",
            "name": "阳泉市",
            "id": "140300000000"
        },
        {
            "province": "山西省",
            "name": "长治市",
            "id": "140400000000"
        },
        {
            "province": "山西省",
            "name": "晋城市",
            "id": "140500000000"
        },
        {
            "province": "山西省",
            "name": "朔州市",
            "id": "140600000000"
        },
        {
            "province": "山西省",
            "name": "晋中市",
            "id": "140700000000"
        },
        {
            "province": "山西省",
            "name": "运城市",
            "id": "140800000000"
        },
        {
            "province": "山西省",
            "name": "忻州市",
            "id": "140900000000"
        },
        {
            "province": "山西省",
            "name": "临汾市",
            "id": "141000000000"
        },
        {
            "province": "山西省",
            "name": "吕梁市",
            "id": "141100000000"
        }
    ]
    
}
#  因为省市数据太多会导致重复审核不通过 所以删减了部分数据 

log = print

'''
def bb():
    # list=[]
    d = {}
    pro = {}
    ci = {}
    l = []
    t = {}
    for p in provice:
        pro = dict()
        pro['province'] = {'id': p['id'], 'name': p['name']}
        for c in city[p['id']]:
            print(c['id'], c['name'])
            t = {'id': c['id'], 'name': c['name']}
            pro.setdefault('city', []).append(t)
        l.append(pro)
        print(pro)
        print('-' * 30, '以下是列表', '-' * 100)
        print(l)
    print(l)
'''


'''
def clear_city_information(city):
    # city = list
    for c in city:
        del c['city']
    return city
'''


def get_result(b, c):
    # log('b', b)
    # log('c', c)
    result = []
    for i in b:
        # log('i', i)
        province = i
        province_id = i.get('id')
        city = c.get(province_id)
        # log('city', city)
        iu = del_city_or_province(city)
        province['city'] = city
        result.append(province)

    # log('result', result)
    return result


def data():

    b = [{
        "name": "北京市",
        "id": "110000000000"
    }]

    c = {
        "110000000000": [{
            "city": "市辖区",
            "name": "东城区",
            "id": "110101000000",
        }]
    }

    e = [
        {
            "id": "110000000000",
            "name": "北京市",
            'city': [
                {
                    "name": "东城区",
                    "id": "110101000000",
                }
            ]
        }
    ]

    b=provice
    c=ccity
    ee = get_result(b, c)
    #log('b',b)
    #log('c',c)
    log('ee', ee)

'''
    if ee != e:
        log('ni co le', ee, e)
    else:
        log('你好棒啊! 你写对了!!!')
'''


def del_city_or_province(a):
    # log('a', a)
    r = []
    for i in a:
        #log('i', i)
        if 'city' in i.keys():
            del i['city']
        else:
            del i['province']

        #log('iiiii', i)
        r.append(i)
    return r


def iu():
    a = [{'city': '市辖区', 'name': '东城区', 'id': '110101000000'}]
    b = [{'name': '东城区', 'id': '110101000000'}]
    xixi = del_city_or_province(a)

    if xixi != b:
        log('ni co le')
    else:
        log('你好棒啊! 你写对了!!!')


def main():
    data()

    #iu()



if __name__ == '__main__':
    main()

    '''
        if p['name'] == '北京市':
            p_id = p['id']
            log(p_id)
            c = city[p_id]
            log('c', c)
     '''

from test_for_learn.final import get_province_city_list

log = print


def data():
    a = get_province_city_list()
    '''
    a = [
        {'name': '北京市',
         'id': '110000000000',
         'city': [
            {'name': '东城区', 'id': '110101000000'
             },
            {'name': '西城区', 'id': '110102000000'
             },
            {'name': '朝阳区', 'id': '110105000000'
             },
            {'name': '丰台区', 'id': '110106000000'
             },
            {'name': '石景山区', 'id': '110107000000'
             },
            {'name': '海淀区', 'id': '110108000000'
             },
            {'name': '门头沟区', 'id': '110109000000'
             },
            {'name': '房山区', 'id': '110111000000'
             },
            {'name': '通州区', 'id': '110112000000'
             },
            {'name': '顺义区', 'id': '110113000000'
             },
            {'name': '昌平区', 'id': '110114000000'
             },
            {'name': '大兴区', 'id': '110115000000'
             },
            {'name': '怀柔区', 'id': '110116000000'
             },
            {'name': '平谷区', 'id': '110117000000'
             },
            {'name': '密云区', 'id': '110118000000'
             },
            {'name': '延庆区', 'id': '110119000000'
             }
        ]
        }
    ]
    '''

    log(
        get_province_id(a, '福建省'),
        get_city_id(a, '中山市'),
        get_info_from_id(a, '110101000000')

    )


def del_city_or_province(city_data):
    """删除原始city数据里多余的city或province字段"""

    city_list = []
    for c in city_data:
        if 'city' in c.keys():
            del c['city']
        else:
            del c['province']

        city_list.append(c)
    log('city_list',city_list)
    return city_list


def is_municipality(city):
    """判断是不是直辖市"""

    municipality = ['北京市', '天津市', '上海市', '重庆市']
    if city in municipality:
        return True
    else:
        return False


def get_no_municipality_id(province_city_info, city_name):
    """获得非直辖市城市的id"""
    city_id = ''
    for province in province_city_info:
        for city in province['city']:
            if city_name == city['name']:
                city_id = city['id']
                return city_id

    log('no_municipality_id', city_id)
    return city_id


def get_province_id(province_city_info, province_name):
    """获得省份名称的id"""
    province_id = ''
    for province in province_city_info:
        if province_name == province['name']:
            province_id = province['id']
            log('province_id', province_id)
            return province_id

    log('province_id', province_id)
    return province_id




def get_city_id(province_city_info, city_name):
    """获得城市名称的id"""
    #  如果城市是直辖市,对应的是省份
    if is_municipality(city_name):
        city_id = get_province_id(province_city_info, city_name)
    else:
        city_id = get_no_municipality_id(province_city_info, city_name)
    log('city_id', city_id)
    return city_id


def get_info_from_id(province_city_info, search_id):
    """从id获得省/市的类型和名称"""

    info = {}
    for province in province_city_info:
        if search_id == province['id']:
            info['type'] = '省'
            info['name'] = province['name']
            log('info',info)
            return info
        else:
            info = get_city_info_from_id(province, search_id)
            log('info', info)
            return info

    return info





def get_city_info_from_id(province:dict, search_id):
    info = {}
    for city in province['city']:
        if search_id == city['id']:
            info['type'] = '市'
            info['name'] = city['name']
            return info
    return info


'''
def is_municipality(city):
    municipality = ['北京市', '天津市', '上海市', '重庆市']
    if city in municipality:
        return True
    else:
        return False


def get_province(a, province):
    for i in a:
        if province in i['name']:
            province_id = i['id']
            log('province_id', province_id)
            return province_id


def get_city(a, city):
    if is_municipality(city):
        get_province(a, city)
    else:
        for i in a:
            #log('i', i)
            #log('-'*100)
            #log('city', i['city'])
            for j in i['city']:
                if city in j['name']:
                    city_id = j['id']
                    log('city_id', city_id)
                    return city_id


def get_type(a,id):
    info = {}
    for i in a:
        if id == i['id']:
            #info['type'] = i['name'][-1]
            info['type'] = '省'
            info['name'] = i['name']
            # log('name',i['name'])
            # log('type',info['type'])
            # log('info',info)

        else:
            for j in i['city']:
                if id == j['id']:
                    #info['type'] = j['name'][-1]
                    info['type'] = '市'
                    info['name'] = j['name']
    log('info', info)
    return info

'''
def main():
    data()


if __name__ == '__main__':
    main()

最终得到结果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值