Найти - Пользователи
Полная версия: помогите со словорем
Начало » Центр помощи » помогите со словорем
1
aleks0070
подскажите.делаю справочник телефонный.нужно что бы можно было удолить контакт из словаря по значению.по ключу я знаю как.значение в данном случае контактный телефон
 elif choise == '7':
        q = input("напишите телефон контакта которого вы хотите удалить ")
for q in sqr:
        del spr[q] 
как по ключу удалить я знаю)
JOHN_16
вопрос - если в адресной книге присутствует два разных контакта, но при этом с одинаковым номером - удалить нужно обоих ?
ПО теме: нужен обход через .items() сравнивая значения запоминать ключи по которым совпали значения - потом удалять элементы словаря по найденным ключам.
wallet
 a={'name1':'547','name2':'636','name3':'547'}
q= raw_input('Vvod namber:')
for name, namber in a.items():
    if namber == q:
        del a[name]
        print a
JOHN_16
wallet
Просто для сведения, на Python3 аналогичный код выдаст Exception - RuntimeError: dictionary changed size during iteration . Потому что во 2 питоне .items() вернет список кортежей т.е. новый объект данных, а в 3 версии вернется views - отображение. Что означает что при изменении словаря (удаление,добавление элементов) отображение будет, прям каламбур, отображать эти изменения. Как следствие изменится размер и существует вероятность изменения последовательности обхода ключей. Поэтому сгенерируется исключение - что бы явно обозначить возможную проблему с пропуском элементов.
py.user.next
JOHN_16
Просто для сведения, на Python3 аналогичный код выдаст Exception - RuntimeError: dictionary changed size during iteration .
Поправил
  
>>> a={'name1':'547','name2':'636','name3':'547'}
>>> q='547' #raw_input('Vvod namber:')
>>> for name, namber in tuple(a.items()):
...     if namber == q:
...         del a[name]
...         print(a)
... 
{'name2': '636', 'name3': '547'}
{'name2': '636'}
>>>
aleks0070
items по любому нада использовать?
JOHN_16
py.user.next
да, оборачивание в tuple или list как раз с имитирует поведение в Питоне 2
aleks0070
подскажите еще один вопрос по таму же справочнику ы у меня в словаре есть список номеров который принадлежит разным контактам. как мне сделать поиск по значениям словаря допустим по первым 4 цифрам.грубо говоря 8926.
я так понимаю нужен цикл фор. но не могу понять как это лучше сделать
JOHN_16
 a = {....}
for key, value in a.items():
    if value.startswith(first_part_of_number):
        do_some_action()
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