python cmp函数未定义_python 字典cmp()函数问题

该博客介绍了如何使用Python实现两个字典的比较。首先,通过比较字典的长度来决定大小,如果长度相同,则找出两个字典中值不相等的最小键,并比较这些键对应的值,从而确定字典的顺序。示例展示了当字典长度相等且键值不同时,如何根据最小不同键的值进行比较。
摘要由CSDN通过智能技术生成

stackoverflow上有关dict的cmp的实现,代码如下:

def smallest_diff_key(A, B):

"""return the smallest key adiff in A such that A[adiff] != B[bdiff]"""

diff_keys = [k for k in A if A.get(k) != B.get(k)]

return min(diff_keys)

def dict_cmp(A, B):

if len(A) != len(B):

return cmp(len(A), len(B))

adiff = smallest_diff_key(A, B)

bdiff = smallest_diff_key(B, A)

if adiff != bdiff:

return cmp(adiff, bdiff)

return cmp(A[adiff], b[bdiff])

先比较字典的长度,如果相等。再比较adiff(在A中与B值不相等的最小key)和bdiff(在B中与A值不相等的最小key),再等则比较两者的值。

>>> dict1 = {'Name': 'e', 'Age': 30, 'Addr':'hust'};

>>> dict2 = {'Name': 'z', 'Age': 27, 'Adds':'hust'};

>>> print "Return Value : %d" % cmp (dict1, dict2)

Return Value : -1

长度相等,直接比较'Addr'和'Adds',所以dict1 < dict2

>>> dict1 = {'Name': 'e', 'Age': 30, 'Addr':'hust'};

>>> dict2 = {'Name': 'z', 'Age': 27, 'Addr':'whu'};

>>> print "Return Value : %d" % cmp (dict1, dict2)

Return Value : -1

>>> min('Name', 'Age', 'Addr')

'Addr'

长度相等,key完全相等,比较value不等keys('Name','Age','Addr')中的最小key('Addr')的value('hust','whu'),所以dict1 < dict2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值