使用 dict.get() 查找指定名称并打印它们的值(如果存在)
Use dict.get() to look for specified names and print their value if present
我有一个格式如下的 GeoJSON:
{
"type": "FeatureCollection",
"features": [{
"type": "Feature",
"properties": {
"uuid": "___",
"type": "road",
"length": "10m",
},
"geometry": {
"type": "LineString",
"coordinates": [
[__________],
[__________],
[__________]
]
}
}]
}
我写了下面的 python 脚本来尝试读取 GeoJSON 的类型,在这个文件中称为 road
.
def process_incoming_file(self, bucket, key, event):
bulk_data = []
try:
obj = s3.get_object(Bucket=bucket, Key=key)
decoded_content = json.loads(obj['Body'].read().decode('utf-8'))
print(decoded_content)
if decoded_content.get('type') == "FeatureCollection":
for (idx, obj) in enumerate(decoded_content['features']):
bulk_item = {}
props = obj.get('properties')
name = obj['properties'].get('name') or 'NULL'
print(name)
keys = [title.lower() for title in props]
print('keys', keys)
type = obj['properties'].get('type', 'road')
print(obj['properties'].get('road'))
我的问题是,在其他 GeoJSON 文件中,type 可能被称为 formofway
以外的名称。
如何编写语句来查找它可能使用的不同名称,例如
type = obj['properties'].get('type', 'road', 'othername', 'something')
如果 GeoJSON 的属性部分中存在这些名称之一,则打印其关联值?例如road
.
您可以嵌套调用 get()
prop = obj['properties']
type = prop.get('type', prop.get('formofway', prop.get('othername', prop.get('something'))))
但如果有很多可能性,这将变得非常深入。您可以改用循环。
type_props = ['type', 'formofway', 'othername', 'something']
for prop in type_props:
if prop in obj['properties']:
type = obj['properties'][prop]
break
我有一个格式如下的 GeoJSON:
{
"type": "FeatureCollection",
"features": [{
"type": "Feature",
"properties": {
"uuid": "___",
"type": "road",
"length": "10m",
},
"geometry": {
"type": "LineString",
"coordinates": [
[__________],
[__________],
[__________]
]
}
}]
}
我写了下面的 python 脚本来尝试读取 GeoJSON 的类型,在这个文件中称为 road
.
def process_incoming_file(self, bucket, key, event):
bulk_data = []
try:
obj = s3.get_object(Bucket=bucket, Key=key)
decoded_content = json.loads(obj['Body'].read().decode('utf-8'))
print(decoded_content)
if decoded_content.get('type') == "FeatureCollection":
for (idx, obj) in enumerate(decoded_content['features']):
bulk_item = {}
props = obj.get('properties')
name = obj['properties'].get('name') or 'NULL'
print(name)
keys = [title.lower() for title in props]
print('keys', keys)
type = obj['properties'].get('type', 'road')
print(obj['properties'].get('road'))
我的问题是,在其他 GeoJSON 文件中,type 可能被称为 formofway
以外的名称。
如何编写语句来查找它可能使用的不同名称,例如
type = obj['properties'].get('type', 'road', 'othername', 'something')
如果 GeoJSON 的属性部分中存在这些名称之一,则打印其关联值?例如road
.
您可以嵌套调用 get()
prop = obj['properties']
type = prop.get('type', prop.get('formofway', prop.get('othername', prop.get('something'))))
但如果有很多可能性,这将变得非常深入。您可以改用循环。
type_props = ['type', 'formofway', 'othername', 'something']
for prop in type_props:
if prop in obj['properties']:
type = obj['properties'][prop]
break