У меня есть словарь в Python, внутри которого есть список кортежей. Примером этого является:Прохождение через словарь с кортежами в Python
peers = {'hash1': [('bot2', 1), ('bot1', 1)]}
Я хочу сделать функцию под названием «обновление», которые принимают все словаря и, если в наборе есть номер один, становятся равными 0, и, если оно равно 0, удалить кортеж.
bucle, что я реализовал это:
def update(self):
for key in self.peers.keys():
for tup in self.peers[key]:
print "--"
print tup
if 0 in tup:
self.peers[key].remove(tup)
else:
newTup = (tup[0], 0)
self.peers[key].remove(tup)
self.peers[key].append(newTup);
Если я два «обновление», правильное поведение должно быть то, что в первом обновлении я должен иметь кортежи в 0 и в следующем, я должен иметь пустой словарь с ключом 'hash1'. Но в реальном поведении я беру его:
Первое обновление:
peers = {'hash1': [('bot1', 1)]}
(два обновления в одном Почему?)
Второе обновление:
peers = {'hash1': [('bot1', 0)]}
(Ох уж этот обновление верно, но почему бы не первый?)
Может кто-нибудь помочь мне с этим кудрям? Я не знаю, почему у него такое поведение ... Я думаю, что кучка правильная, но ..
Спасибо!
вы изменяете список, как вы идете через него. это очень плохая практика. –