로그 파일을 구문 분석하기 위해 자체적으로 도움이되는 구조를 만들려고합니다. 먼저 클래스 사전으로 사전 설정을 시도했지만 클래스 속성을 작성한 이후로는 작동하지 않습니다.다른 사전 내의 다른 사전 내의 Python 두 사전
나는 지금 내 구조를 설정하려면 다음을 시도하고있다 :
#!/usr/bin/python
class Test:
def __init__(self):
__tBin = {'80':0, '70':0, '60':0, '50':0,'40':0}
__pBin = {}
__results = list()
info = {'tBin' : __tBin.copy(),
'pBin' : __pBin.copy(),
'results': __results}
self.writeBuffer = list()
self.errorBuffer = list()
self.__tests = {'test1' : info.copy(),
'test2' : info.copy(),
'test3' : info.copy()}
def test(self):
self.__tests['test1']['tBin']['80'] += 1
self.__tests['test2']['tBin']['80'] += 1
self.__tests['test3']['tBin']['80'] += 1
print "test1: " + str(self.__tests['test1']['tBin']['80'])
print "test2: " + str(self.__tests['test2']['tBin']['80'])
print "test3: " + str(self.__tests['test3']['tBin']['80'])
Test().test()
여기 목표로 내 두 가지 사전 객체 (__tBin 및 __pBin)과 (각 시험을 위해 그 사본을 만드는 즉 TEST1 TEST2를 만드는 것입니다 test3 ...). 그러나 명시 적으로 복사본을 만들고있는 것처럼 느껴질 때 test1, test2 및 test3이 여전히 동일한 값을 공유한다는 것을 경험하고 있습니다. 위의 코드에는 내가 수행하려고하는 것을 테스트하는 방법도 포함되어 있습니다.
1, 1, 1이 인쇄 될 것으로 예상되지만, 3, 3, 3을 볼 수는 있습니다. 특히 사전에 명시 적으로 'copy()'를 할 때 그 이유를 알아낼 수 없습니다.
이 난 단지 (즉, 비 재귀) 사본 얕은에 의해 복사
self.__tests = {'test1' : info.copy(),
'test2' : info.copy(),
'test3' : info.copy()}
변수 info
에서 파이썬 2.7.4
xml 또는 html을 구문 분석하는 경우 lxml 및 etree를 권장합니다. – Mai