0
누군가가 아래 코드에서 "Cvalue"가 결과 [key]에 추가되기를 원할 때 "fred"에 추가되는 것을 막을 수 있습니까?
파이썬 2.7을 사용하고 있지만 파이썬 3은 똑같이 동작합니다.python dict에 추가하면 다른 변수에 영향을받습니다.
#!/usr/bin/env python
hdict = {52951331: [5], 23396132: [4], 82982473: [19, 37], 126988879: [20] }
Cdict = {23396132: [19, 37], 82982473: [4], 126988879: [5], 52951331: [20]}
result = {}
for key, value in hdict.iteritems():
if key in Cdict:
result[key] = value
for Cvalue in Cdict[key]:
fred = value
print 'fred1: ', fred
result[key].append(Cvalue)
print 'fred2: ', fred
'fred = value'는'value'의 사본을 만들지 않습니다. 'result [key] = value'와 동일합니다. [ "파이썬 이름과 값에 관한 사실과 신화"] (http://nedbatchelder.com/text/names.html)를보십시오. – user2357112
이것은 dicts에 관한 것이 아니라 목록에 관한 것입니다. 딕트는 단지 물건을 난독 화합니다. 'some_value'와 같은 문제가 생깁니다. – Evert