python中2個字典比較


用到的兩個函數:

set() 函數:創建一個無序不重復元素集,可進行關系測試,刪除重復數據,還可以計算交集、差集、並集等。
cmp(x,y) 函數:用於比較2個對象,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1

1.列出不同的鍵值

#!/usr/bin/python
# -*- coding:utf-8 -*-

import os, sysimport re

reload(sys)
sys.setdefaultencoding("utf8")


dct0 = {"name":"zhang","age":"23"}
dct1 = {"name":"san","age":"23"}
def cmpdicts(dct0, dct1):
    diffs = set()
    keys = set(dct0.keys() + dct1.keys())
    for k in keys:
        if cmp(dct0.get(k), dct1.get(k)):
           diffs.add(k)
    return diffs
dict_diff =  cmpdicts(dct0, dct1)
print "字典不同的值:"
print dict_diff

運行結果:

字典不同的值:
set(['name'])

 

2.列出所有的不同鍵值

#!/usr/bin/python
# -*- coding:utf-8 -*-

import os, sys
import re


reload(sys)
sys.setdefaultencoding("utf8")

dct0 = {"name":"zhang","age":"23"}
dct1 = {"name":"san","age":"23","sex":"1"}
print "字典dct0的值:" + str(dct0)
print "字典dct1的值:" + str(dct1)

differ = set(dct0.items()) ^ set(dct1.items())
print "字典不同的值:"
print(differ)


print "查看字典dct0和字典dct1共有的key" 
print set(dct0.keys()) & set(dct1.keys())

print "查看字典dct0和字典dct1不共有的key" 
print set(dct0.keys()) ^ set(dct1.keys())

print "查看在字典dct1里面而不在字典dct0里面的key:"  
print set(dct1.keys()) - set(dct0.keys())

print "查看字典dct0和字典dct1相同的鍵值對:" 
print set(dct0.items()) & set(dct1.items())

運行結果:

字典dct0的值:{'age': '23', 'name': 'zhang'}
字典dct1的值:{'age': '23', 'name': 'san', 'sex': '1'}
字典不同的值:
set([('name', 'zhang'), ('sex', '1'), ('name', 'san')])
查看字典dct0和字典dct1共有的key
set(['age', 'name'])
查看字典dct0和字典dct1不共有的key
set(['sex'])
查看在字典dct1里面而不在字典dct0里面的key:
set(['sex'])
查看字典dct0和字典dct1相同的鍵值對:
set([('age', '23')])

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM