如果我按如下方式创建字典:
measurements = { 'units': 'imperial','fit': request.POST[ 'fit' ],'height': request.POST[ 'height' ],'weight': request.POST[ 'weight' ],'neck': request.POST[ 'neck' ],# further elements omitted for brevity}
我可以尝试迭代它,如:
for k,v in measurements.iteritems(): print k,'corresponds to ',v
结果是:
shoulders corresponds to shoulders_valweight corresponds to weight_valheight corresponds to height_valwrist corresponds to wrist_val...
我也尝试使用sorted(),按字母顺序按键遍历我的元素
bicep corresponds to bicep_valchest corresponds to chest_valfit corresponds to fit_valheight corresponds to height_val...
我是Python的新手.我希望找到某种方法来通过命名键来引用我的字典元素,例如测量[‘units’],但仍然能够按照它们的创建顺序迭代这些元素.我知道那里有一个ordered dictionary module,但我想远离非标准包裹.任何其他标准Python数据结构(列表,数组等)是否允许我通过命名键迭代插入顺序和引用值?
解决方法 如果您使用的是py2.7或更新版本,则可以使用collections.OrderedDict
来保留插入顺序.这是标准库的一部分.对于旧版本,有一个 activestate recipe浮动,你可以复制和使用作为你的包/模块的一部分.否则,标准库中没有任何内容可以执行此 *** 作. 您可以自己子类化dict并使其成为记忆插入事物的顺序 – 例如将信息存储在列表中 – 但是当标准库中已存在某些新版本的内容以及您可以使用的配方时,这是过度的如果您想支持旧版本,可以随时使用复制/粘贴.
请注意,如果您将字典传递给它们,则接受字典(__init __,update)的字典方法将无法正确排序:
import collectionsdd = collections.OrderedDict({ 'units': 'imperial','fit': 'fit','height': [ 'height' ],'weight': [ 'weight' ],'neck': [ 'neck' ],})print( dd ) #Order not preserved#Pass an iterable of 2-tuples to preserve order.ddd = collections.OrderedDict([ ('units','imperial'),('fit','fit'),('height',[ 'height' ]),('weight',[ 'weight' ]),('neck',[ 'neck' ]),])print( ddd ) #Order preserved总结
以上是内存溢出为你收集整理的Python中Dictionary的替代方法 – 需要通过命名键引用值并按插入顺序迭代全部内容,希望文章能够帮你解决Python中Dictionary的替代方法 – 需要通过命名键引用值并按插入顺序迭代所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)