您好,我正在编写一个函数,用于将地址数组(包括street name、ward name、district name和city name)转换为一个对象,该对象显示上述每个数组元素的位置代码(street code、ward code、district code和city code来自json文件)
例如,输出对象的格式应如下所示:
{city_name: city_code, district_name: district_code, ward_name: ward_code, street_name: street_code}
目前正在处理一个示例(数组可以随机排序,比如只有3个元素,或者4个元素或元素随机排序,这就是我使用for循环搜索的原因)location的数组如下:
['Đường Lê Quang Định', 'Phường 11', 'Bình Thạnh', 'Hồ Chí Minh']
输出:
{'Đường Lê Quang Định': street_code, 'Phường 11': ward_code, 'Bình Thạnh': district_code, 'Hồ Chí Minh': city_code}
或者可能是这样:
[ 'Phường 11','Đường Lê Quang Định','Bình Thạnh', 'Hồ Chí Minh']
输出:
{'Phường 11': ward_code,'Đường Lê Quang Định': street_code, 'Bình Thạnh': district_code, 'Hồ Chí Minh': city_code}
或者这个:
['Đường Lê Quang Định','Bình Thạnh', 'Hồ Chí Minh']
输出:
{'Đường Lê Quang Định': street_code, 'Bình Thạnh': district_code, 'Hồ Chí Minh': city_code}
或者一些随机编号(如果在JSON find中找不到,则返回空字符串):
['house number 35', 'Đường Lê Quang Định','Bình Thạnh', 'Hồ Chí Minh']
输出:
{'house number 35': ' ', 'Đường Lê Quang Định': street_code, 'Bình Thạnh': district_code, 'Hồ Chí Minh': city_code}
因此,数组可以是任何地址,这就是为什么我使用for循环来搜索数组中的每个元素,并与JSON进行比较以获得该特定元素的位置代码的原因
json文件包含位置代码(代码)_地址.json)有超过10000行,但我将发布我当前遇到问题的行:
{
"Hồ Chí Minh": {
"cityCode":"SG",
"districts":{
"Bình Thạnh":{
"districtCode":"66",
"wards":{
"Phường 1":"8881",
"Phường 2":"8883",
"Phường 3":"8884",
"Phường 5":"8885",
"Phường 6":"8886",
"Phường 7":"8887",
"Phường 11":"8889", <-correct ward_code
},
"streets":{
"Đường Phạm Văn Đồng":"1433",
"Đường Trường Sa":"1485",
"Đường Lê Quang Định":"1428",<-- correct street_code
"Đường Lam Sơn":"1600",
"Đường Huỳnh Tịnh Của":"1603",
"Đường Đống Đa":"1652",
}
}
}
}
"Đồng Tháp":{
"cityCode":"DDT",
"districts":{
"Cao Lãnh":{
"districtCode":"721",
"wards":{
"Phường 1":"6898",
"Phường 2":"6899",
"Phường 3":"6901",
"Phường 4":"6902",
"Phường 6":"6903",
"Phường 11":"6904"<- output but it's not correct ward_code
},
"streets":{
"Đường Lê Quang Định":"1530", <- output but it's not correct street_code
"Đường Nguyễn Chí Thanh":"70",
"Đường Huỳnh Thúc Kháng":"78",
"Đường Lê Duẩn":"89",
"Đường Đinh Công Tráng":"99",
}
}
}
}
}
如您所见,json文件的格式如下:
{
city_name:{
"cityCode": city_code,
"district":{
district_name:{
"districCode": district_code,
"wards": {
ward_name: ward_code
},
"streets": {
street_name: street_code
}
}
}
}
}
我编写的函数用于查找location数组中每个元素的位置:
convert.py:
def loopJson():
arrs = ['Đường Lê Quang Định', 'Phường 11', 'Bình Thạnh', 'Hồ Chí Minh']
with open('reform_address.json','r') as jfile:
j_data = json.load(jfile)
a = {}
new_cities = {}
for value in reversed(arrs):
for cityName in j_data.keys():
if value == cityName:
new_cities[value] = j_data[value]['cityCode']
for districtName in j_data[cityName]['districts'].keys():
if value == districtName:
new_cities[value] = j_data[cityName]['districts'][value]['districtCode']
for wardName in j_data[cityName]['districts'][districtName]['wards'].keys():
if value == wardName:
new_cities[value] = j_data[cityName]['districts'][districtName]['wards'][value]
for streetName in j_data[cityName]['districts'][districtName]['streets'].keys():
if value == streetName:
new_cities[value] = j_data[cityName]['districts'][districtName]['streets'][value]
a.update(new_cities)
print(a)
loopJson()
在JSON位置的代码中,一些ward和street名称将重复,但它属于不同的城市
我得到的函数的返回对象是
{'Hồ Chí Minh': 'SG', 'Bình Thạnh': '66', 'Phường 11': '6904', 'Đường Lê Quang Định': '1530'}
对象的第三和第四个元素有错误的位置代码,因为6904和1530不属于HồChíMinh市,但它在Đồng Tháp市
预期的正确结果应为:
{'Hồ Chí Minh': 'SG', 'Bình Thạnh': '66', 'Phường 11': '8889', 'Đường Lê Quang Định': '1428'}
我做错什么了?任何帮助都将不胜感激:)
编辑: 我编辑了我的问题来更详细地描述这个函数在做什么,它从一个JSON文件中获取地址的任何输入数组并查找类似的位置代码
我忘了说,输入数组可以是任何随机元素的位置,在我第一次发布它,所以这是我的坏
您工作太辛苦了:使用
arrs
,您可以将密钥放入数据中,而不需要使用for
循环进行搜索。解决此问题的最佳方法是打开Python解释器并处理数据。以下是建议的解决方案:注意事项
arrs
作为键,我们可以直接访问city_code
、district_code
、ward_code
到city_code
converted
字典,这就是您想要的。你知道吗arrs
中的数据是错误的,那么我们将遇到一个KeyError
,消息应该告诉我们哪个信息(城市、地区,…)没有找到希望这能帮助你达到你需要的地方。它将每个不同的城市添加到一个列表中。你知道吗
相关问题 更多 >
编程相关推荐