두 개의 서로 다른 사전은 & 값이 동일한 것으로 간주되지 않을 것이다 :
>>> d1 = {'k1': 12345}
>>> d2 = {'k1': 12345}
>>> d1 is d2
False
>>> d1['k1'] is d2['k1']
False
을 실제로 하나에서 다른 값을 복사하더라도 : 각각 때문이다
>>> d1['k1'] = d2['k1']
>>> d1['k1'] is d2['k1']
True
>>> d1 is d2
False
별도의 컨테이너입니다.
이
(set(d1) == set(d2)) and all(d1[k] == d2[k] for k in d1)
첫 번째 하위 표현식은 각각 같은 값으로 키가 확인합니다 : 모든 키와 값이 같은 표현을 사용 동일 값보다는 문자 그대로있는 동일한 개체가있는 경우에 다른 한편으로는, 당신은 확인할 수 있습니다 두 번째 키는 각각의 키와 연관된 값이 동일한 것입니다.
저장된 데이터에서 사전을 다시 구성하면 새 데이터가 만들어집니다. 같은 사전은 아니지만 모든 키와 값은 원본과 동일해야합니다. 이것이 사실이 아니라면 적어도 동일한 코드가 아닌 코드인지 확인하십시오. 나는 그것의 값이이 클래스를 기반으로 사전을 만들
class SchemaObject:
def __init__(self):
self.type = ''
self.name = ''
self.parentdn = ''
self.dn = ''
self.oclass = ''
def initWithXMLNode(self, xmlnode, parentdn):
self.type = ''
self.name = ''
self.parentdn = parentdn
if xmlnode.nodeName=='fragments':
self.dn = parentdn
if xmlnode.nodeName=='fragment':
self.initFragment(xmlnode)
elif xmlnode.nodeName=='configGroupLdap':
self.initGroup(xmlnode)
elif xmlnode.nodeName=='configObjectLdap':
self.initObject(xmlnode)
def initWithFragment(self, dn, parentdn, name):
self.type = 'object'
self.name = name
self.parentdn = parentdn
self.dn = dn
self.oclass = name
def initFragment(self, xmlnode):
self.type = 'fragment'
self.dn = 'fsFragmentId=' + xmlnode.firstChild.nodeValue + ',' + self.parentdn
self.oclass = 'FSFragment'
def initGroup(self, xmlnode):
self.type = 'group'
self.name = 'group-' + xmlnode.getAttribute('name')
self.dn = xmlnode.getAttribute('dn')
self.oclass = 'FSFragment'
def initObject(self, xmlnode):
self.type = 'object'
self.name = xmlnode.getAttribute('name')
self.oclass = self.name
if not xmlnode.hasAttribute('rdnname'):
self.type = 'no_rdnname'
return
else:
rdnname = xmlnode.getAttribute('rdnname')
parts = rdnname.split(',')
if xmlnode.getAttribute('multiple')!='true':
dn = self.parentdn
for part in reversed(parts):
dn = 'fsFragmentId=' + part + ',' + dn
self.dn = dn
else:
self.type = ''
self.dn = 'fsFragmentId=' + parts[len(parts)-1] + ',' + self.parentdn
dynamicStatics.append(self.oclass)
및 파일 B.py에 :처럼 실제로 사전의 값입니다 클래스의
인스턴스는 일반적으로 picklable이므로 일부 코드 예제 또는 사용자가 입력 한 내용과 벗어나는 내용을 보여주는 예제가 필요합니다. –
* 두 개의 딕트는 동일하지 않습니다. * - "같은"측정은? 그들은 동일한 정체성을 가지지 않을 것입니다. 커스텀 클래스는'__eq__' 메소드를 가지고 있습니까? – MattH