我有一本字典,里面有很多东西。我想看看一个任意的项目:
print "Amongst our dictionary's items are such diverse elements as: %s" % arb(dictionary)
我不在乎哪一项。它不需要是随机。
我可以想出很多方法来实现这一点,但它们似乎都是浪费。我想知道在Python中是否有首选的习惯用法,或者(甚至更好)是否缺少一个。
def arb(dictionary):
# Creates an entire list in memory. Could take a while.
return list(dictionary.values())[0]
def arb(dictionary):
# Creates an entire interator. An improvement.
for item in dictionary.itervalues():
return item
def arb(dictionary):
# No iterator, but writes to the dictionary! Twice!
key, value = dictionary.popitem()
dictionary[key] = value
return value
我所处的位置的性能还不够关键,所以我可能会被指责为过早优化,但我正在努力改进我的Python编码风格,因此如果有一个易于理解的变体,最好采用它。
避免整个
values
/itervalues
/viewvalues
混乱,这在Python2或Python3中同样有效或者,如果您喜欢生成器表达式
我相信这个问题已经得到了很好的回答,但希望这一比较将有助于揭示干净代码与时间的权衡:
结果如下:
似乎使用iterkeys的速度比弹出一个条目并重新插入要快得多,但比创建列表并从中选择随机对象快10倍。
类似于你的第二个解决方案,但在我看来稍微明显一点:
这在Python2和Python3中都适用,但在Python2中,这样做效率更高:
相关问题 更多 >
编程相关推荐