Найти - Пользователи
Полная версия: копирование "словаря по значению"
Начало » Python для новичков » копирование "словаря по значению"
1
janitor
функция
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
Ferroman
Потому что при присвоении списков создаётся не копия списка а ссылка на первоначальный список. Для получения копии списка надо использовать copy и deepcopy.
janitor
m=a.copy()
работает, супер, спасибо
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB