python兼容性友好的字典方法?

python兼容性友好的字典方法?,python,python-3.x,dictionary,compatibility,backwards-compatibility,Python,Python 3.x,Dictionary,Compatibility,Backwards Compatibility,在哪里可以找到有关最向前/向后兼容的词典方法的信息?例如,在Python2.5以后的版本中保持不变的东西,在python3中也将得到支持 例如:我不确定d.itervalues()是否是一种向后/向前兼容的方法?我使用它从字典中获取单个元素: # is this good form for those who care about compatibility? d = {"foo": {"bar": []}} elt = next(d.itervalues()) 对于此特定方法字典。iterv

在哪里可以找到有关最向前/向后兼容的词典方法的信息?例如,在Python2.5以后的版本中保持不变的东西,在python3中也将得到支持

例如:我不确定
d.itervalues()
是否是一种向后/向前兼容的方法?我使用它从字典中获取单个元素:

# is this good form for those who care about compatibility?
d = {"foo": {"bar": []}}
elt = next(d.itervalues())

对于此特定方法字典。itervalues(),它在Python 3中更改为dictionary。values()

检查这个库,它解决了Python2和Python3之间的兼容性问题


对于这个特定的方法字典。itervalues(),它在Python 3中更改为dictionary。values()

检查这个库,它解决了Python2和Python3之间的兼容性问题


如果在内存中具体化时不太可能是一个非常大的列表,那么使用
.values()
是向前兼容的

可以肯定的是,您可以这样做:

d = {"foo": {"bar": []}}
elt = next(iter(d.values()))
而elt回来了

{'bar': []}
我个人在Python2.6和3.3中测试了这一点,但是


代码将是向前兼容的,然后当您不再希望在2中获得支持时,您可以清理
iter
部分。

如果在内存中具体化时不太可能是一个非常大的列表,那么使用
.values()
将是向前兼容的

可以肯定的是,您可以这样做:

d = {"foo": {"bar": []}}
elt = next(iter(d.values()))
而elt回来了

{'bar': []}
我个人在Python2.6和3.3中测试了这一点,但是


代码将是向前兼容的,然后当您不再希望在2中获得支持时,您可以清理
iter
部分。

这样一个基本的核心功能在不同版本之间更改名称和推荐的习惯用法,这是非常令人沮丧的。基本上没有一个好的方法可以在不同的版本中实现这一点?我不会使用
values()
,因为这将打破旧的pythonsAgree:)也许在这种情况下,六库会很方便。这样一个基本的核心功能在不同版本之间更改名称和推荐的习惯用法,这让人非常沮丧。基本上没有一个好的方法可以在不同的版本中实现这一点?我不会使用
values()
,因为这将打破旧的pythonsAgree:)在这种情况下,也许六个库会很方便。难道
values()
不打算将其全部加载到内存中吗?我们的目标不是让
values()
将其全部加载到内存中?目标不是让字典在Python中没有顺序<代码>英语教学可能会因相同的
dict
而在不同的运行中发生变化。要以向后/向前兼容的方式从没有
six.itervalues()
的dict中获取一些值:
d[next(iter(d))]
。顺便说一句,
next()
builtin仅在Python2.6+@JFSebastian中可用:我可以满足于2.6+支持,因此如果
next(iter(d))
在Python3中工作,并且不需要在内存中加载整个列表(看起来不像是这样的),那么这就是答案在Python中没有顺序<代码>英语教学可能会因相同的
dict
而在不同的运行中发生变化。要以向后/向前兼容的方式从没有
six.itervalues()
的dict中获取一些值:
d[next(iter(d))]
。顺便说一句,
next()
builtin仅在Python2.6+@JFSebastian中可用:我可以满足于2.6+支持,因此如果
next(iter(d))
在Python3中工作,并且不需要在内存中加载整个列表,这就是答案