簡體   English   中英

通過在有序字典中拆分字符串來創建字典

[英]create a dict by spliting a string in an ordered dict

我有一個有序的字典,代表字段定義,即名稱,類型,寬度,精度

它看起來像這樣:

 OrderedDict([(u'CODE_MUN', 'str:8'), (u'CODE_DR_AN', 'str:8'),
 (u'AREA', 'float:31.2'), (u'PERIMETER', 'float:31.4')])

我想為每個項目創建一個像這樣的字典:

{'name' : 'CODE_MUN', 'type': 'str', 'width': 8, 'precision':0}用於沒有精度的字段

{'name' : 'AREA', 'type': 'float', 'width': 31, 'precision':2 }用於精確的字段

for keys, values in fieldsDict.iteritems():
   dict = {}
   dict['name'] = keys
   props = re.split(':.', values)
   dict['type'] = props[0]
   dict['width'] = props[1]
   dict['precision'] = props[2]

當沒有定義精度時,我當然會有索引錯誤。 實現這一目標的最佳方法是什么?

您必須檢查precision是否存在。

from collections import OrderedDict
import re

fieldsDict = OrderedDict([(u'CODE_MUN', 'str:8'), (u'CODE_DR_AN', 'str:8'),
 (u'AREA', 'float:31.2'), (u'PERIMETER', 'float:31.4')])

for keys, values in fieldsDict.iteritems():
   dict = {}
   dict['name'] = keys
   props = re.split(':.', values)
   dict['type'] = props[0]
   dict['width'] = props[1]
   if len(props) == 3:
       dict['precision'] = props[2]
   else:
       dict['precision'] = 0
   print dict

這可能有幫助

使用try-except塊。

for keys, values in fieldsDict.iteritems():
    dict = {}
    dict['name'] = keys
    props = re.split(':.', values)
    dict['type'] = props[0]
    dict['width'] = props[1]

    try:
        dict['precision'] = props[2]
    except IndexError:
        dict['precision'] = 0

您也可以使用if-else塊測試長度。 這些方法非常接近,我懷疑這是否真的很重要,但是要了解更多關於寬恕允許的信息 ,請參見此問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM