【发布时间】:2012-05-22 13:07:08
【问题描述】:
我有一本字典,里面有很多东西。我想偷看一个任意的项目:
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 iterator. An improvement.
for item in dictionary.values():
return item
def arb(dictionary):
# No iterator, but writes to the dictionary! Twice!
key, value = dictionary.popitem()
dictionary[key] = value
return value
我处于一个性能不够关键的位置,这很重要(还),所以我可能会被指责为过早优化,但我正在努力改进我的 Python 编码风格,所以如果有一个容易理解的变体,采用它会很好。
【问题讨论】:
-
dictionary.itervalues().next()怎么样?这至少会比你的第二个arb函数更好。 -
@sgerg 我本来打算提交的,但你继续。 :D
-
在通话中它们是否需要是不同的项目?所有这些都将返回相同的项目...
-
当你知道你不需要做额外的工作时不做不是过早的优化。这是效率。
-
如果你想查看一个 item(与值相反)你应该使用
iteritems而不是itervalues/nitpick/
标签: python