作业帮 > 综合 > 作业

一个很简单的python里的词典问题

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/22 08:51:45
一个很简单的python里的词典问题
prices = {'banana':4,'apple':2,'orange':1.5,'pear':3}
stock = {'banana':6,'apple':0,'orange':32,'pear':15}
for price in prices:
print price
print 'price:',prices[price]
print 'stock:',stock[price]
请问为什么结果是这个顺序?词典里的元素存储不是无序的吗,每次运行都是这个顺序.
此外词典里的value是int 或float,为什么打印出来,不需要用str()转换已经就是数字显示了
orange
price:1.5
stock:32
pear
price:3
stock:15
banana
price:4
stock:6
apple
price:1
stock:0
字典的排序是根据hash值来排序的,只要对象的hash值是有序的,那么结果也会是有序的.
我举个例子
import os
import random
class a( object ):
data = 0
def __init__( self ):
self.data = self.data
self.__class__.data += 1

def __hash__( self ):
return random.randint( 0 ,100 )

def __repr__( self ):
return 'a object data ---> %d' % self.data

b = dict( ( a( ) ,i ) for i in range( 6 ) )

for i in b:
print( i )
你试一下上面的代码,就会发现每次都是无序的