<p>我认为您的主要关注点应该是可读性和底层数据结构。在</p>
<p>类似这样的东西非常易读,而且(很可能)您可以通过自己的滚动实现高性能:</p>
<pre><code>from collections import Counter
class Fridge(object):
def __init__(self,things,name):
self.things=Counter(things)
self.wanted=set()
self.name=name
def look(self, thing):
print 'There are {} {} in {}'.format(self.things[thing],thing,self.name)
def stare_inside(self):
cathave=sorted([(co,it) for it,co in self.things.items() if co])
print '{} items in {}:'.format(len(cathave),self.name)
for i, item in enumerate(cathave,1):
print ' {}: {} -- {}'.format(i,item[1],item[0])
def shop(self):
shop_list=[it for it,co in self.things.items() if co==0]
for item in shop_list:
del self.things[item]
shop_list.extend(list(self.wanted))
self.wanted=set()
print "shopping list:"
for i, item in enumerate(sorted(shop_list),1):
print ' {}: {}'.format(i,item)
def consume(self,thing,count):
if self.things[thing]>=count:
self.things[thing]-=count
else:
print 'Not enough {} to consume {} -- {} in the {}.'.format(
thing,count,self.things[thing],self.name)
self.wanted.add(thing)
def stock(self,things):
self.things+=Counter(things)
</code></pre>
<p>现在试试看:</p>
^{pr2}$
<p>这是基于<a href="http://docs.python.org/2/library/collections.html#collections.Counter" rel="nofollow">collection module Counter class.</a>你不太可能想出更快的原生Python。在</p>