Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 13, 2009 10:50:19

janitor
От:
Зарегистрирован: 2009-11-03
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

копирование "словаря по значению"

функция

def getNOD(a,b):
#m={}
m=a
#for x in a:
# m[x]=a[x]
for x in b:
if x in m:
if b[x]>m[x]:
m[x]=b[x]
else: m[x]=b[x]
return m
a,b -словарь, полученные в результате функции getsomn(a,b). Функция делает один словарь, со всеми ключами a и b. При повторении ключей записывается элемент с наибольшим значением.

Но это все фигня, а проблема в том, что модифицируется элемент а. Я нашел решение(закомментировано), но наверняка есть человеческие методы. Есть же?

ЗЫ
на вход подаются словари, полученные в результате выполнения
def getsomn(ch):
mn={}
z=kan(ch)
while z!=1:
ch=ch/z
if z in mn: mn[z]=mn[z]+1
else: mn[z]=1
z=kan(ch)
return mn



Офлайн

#2 Дек. 13, 2009 10:54:10

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

копирование "словаря по значению"

Потому что при присвоении списков создаётся не копия списка а ссылка на первоначальный список. Для получения копии списка надо использовать copy и deepcopy.

Офлайн

#3 Дек. 13, 2009 10:57:12

janitor
От:
Зарегистрирован: 2009-11-03
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

копирование "словаря по значению"

m=a.copy()
работает, супер, спасибо



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version