0

很抱歉这个基本问题,我刚开始学习,我觉得这很困难。示例我有一个列表,其中有面积大小,我需要将它们全部设为 m²,因此我必须以某种方式将 ha 乘以 10 000。

{
 '17001:003:0009': '712 m²', '17001:003:0010': '1694 m²',
 '33101:004:0568': '2070 m²', '33101:003:0502': '3553 m²', 
 '33101:003:0503': '2308 m²', '69403:002:0317': '23.95 ha', 
 '69403:001:0263': '8.76 ha', '33101:001:0197': '5.05 ha', 
 '33101:003:0550': '2.65 ha', '33101:004:0596': '2.45 ha'
}
4

2 回答 2

0

遍历键和值并ha在值的末尾进行测试。相应地处理。请注意,有 10K 平方米/公顷。

from pprint import pprint

d = {
 '17001:003:0009': '712 m²', '17001:003:0010': '1694 m²',
 '33101:004:0568': '2070 m²', '33101:003:0502': '3553 m²', 
 '33101:003:0503': '2308 m²', '69403:002:0317': '23.95 ha', 
 '69403:001:0263': '8.76 ha', '33101:001:0197': '5.05 ha', 
 '33101:003:0550': '2.65 ha', '33101:004:0596': '2.45 ha'
}

for k,v in d.items():
    num = float(v[:-2])
    d[k] = num * 10_000 if v.endswith('ha') else num

pprint(d)

输出:

{'17001:003:0009': 712.0,
 '17001:003:0010': 1694.0,
 '33101:001:0197': 50500.0,
 '33101:003:0502': 3553.0,
 '33101:003:0503': 2308.0,
 '33101:003:0550': 26500.0,
 '33101:004:0568': 2070.0,
 '33101:004:0596': 24500.0,
 '69403:001:0263': 87600.0,
 '69403:002:0317': 239500.0}
于 2021-11-10T19:04:34.977 回答
0

这样做将保留值的类型和样式:

from pprint import pprint

D = {
    '17001:003:0009': '712 m²', '17001:003:0010': '1694 m²',
    '33101:004:0568': '2070 m²', '33101:003:0502': '3553 m²',
    '33101:003:0503': '2308 m²', '69403:002:0317': '23.95 ha',
    '69403:001:0263': '8.76 ha', '33101:001:0197': '5.05 ha',
    '33101:003:0550': '2.65 ha', '33101:004:0596': '2.45 ha'
}

for k, v in D.items():
    if v[-2:] == 'ha':
        D[k] = f'{round(float(v[:-2]) * 10_000)} m²'
pprint(D)

{'17001:003:0009': '712 m²',
 '17001:003:0010': '1694 m²',
 '33101:001:0197': '50500 m²',
 '33101:003:0502': '3553 m²',
 '33101:003:0503': '2308 m²',
 '33101:003:0550': '26500 m²',
 '33101:004:0568': '2070 m²',
 '33101:004:0596': '24500 m²',
 '69403:001:0263': '87600 m²',
 '69403:002:0317': '239500 m²'}
于 2021-11-10T19:24:56.390 回答