Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 21, 2016 18:11:31

aleks0070
Зарегистрирован: 2016-10-23
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

помогите со словорем

подскажите.делаю справочник телефонный.нужно что бы можно было удолить контакт из словаря по значению.по ключу я знаю как.значение в данном случае контактный телефон

 elif choise == '7':
        q = input("напишите телефон контакта которого вы хотите удалить ")
for q in sqr:
        del spr[q] 
как по ключу удалить я знаю)

Офлайн

#2 Ноя. 21, 2016 22:36:44

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

помогите со словорем

вопрос - если в адресной книге присутствует два разных контакта, но при этом с одинаковым номером - удалить нужно обоих ?
ПО теме: нужен обход через .items() сравнивая значения запоминать ключи по которым совпали значения - потом удалять элементы словаря по найденным ключам.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Ноя. 21, 2016 22:48:15

wallet
Зарегистрирован: 2016-02-21
Сообщения: 50
Репутация: +  2  -
Профиль  

помогите со словорем

 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

Офлайн

#4 Ноя. 21, 2016 23:52:21

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

помогите со словорем

wallet
Просто для сведения, на Python3 аналогичный код выдаст Exception - RuntimeError: dictionary changed size during iteration . Потому что во 2 питоне .items() вернет список кортежей т.е. новый объект данных, а в 3 версии вернется views - отображение. Что означает что при изменении словаря (удаление,добавление элементов) отображение будет, прям каламбур, отображать эти изменения. Как следствие изменится размер и существует вероятность изменения последовательности обхода ключей. Поэтому сгенерируется исключение - что бы явно обозначить возможную проблему с пропуском элементов.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#5 Ноя. 22, 2016 03:03:29

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9896
Репутация: +  855  -
Профиль   Отправить e-mail  

помогите со словорем

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'}
>>>



Отредактировано py.user.next (Ноя. 22, 2016 03:03:53)

Офлайн

#6 Ноя. 22, 2016 03:17:51

aleks0070
Зарегистрирован: 2016-10-23
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

помогите со словорем

items по любому нада использовать?

Офлайн

#7 Ноя. 22, 2016 09:17:44

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

помогите со словорем

py.user.next
да, оборачивание в tuple или list как раз с имитирует поведение в Питоне 2



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#8 Ноя. 22, 2016 18:33:26

aleks0070
Зарегистрирован: 2016-10-23
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

помогите со словорем

подскажите еще один вопрос по таму же справочнику ы у меня в словаре есть список номеров который принадлежит разным контактам. как мне сделать поиск по значениям словаря допустим по первым 4 цифрам.грубо говоря 8926.
я так понимаю нужен цикл фор. но не могу понять как это лучше сделать

Офлайн

#9 Ноя. 22, 2016 19:17:34

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

помогите со словорем

 a = {....}
for key, value in a.items():
    if value.startswith(first_part_of_number):
        do_some_action()



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version