Python Forum
Adding to the dictionary inside the for-loop - weird behaviour
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Adding to the dictionary inside the for-loop - weird behaviour
#1
I want to write a program in which as an input I take a list consisted of words which can contain punctuation marks. I built a dictionary where keys are elements of a given list and values are empty lists. My goal is to add to these lists (inside the this dictionary) the indexes of those chars from the words which are punctuation marks. The program works partially - the problem is, that it adds the proper index to the previous list, i. e. to the list for the previous key, not for the current one. If you analyze the code, you will see what I mean:
list1 = ['!,', 'Hey!']
dict_words = dict.fromkeys(list1, [])
print(list1)
print(dict_words)
print()
for word in list1:    
  counter_punc = 0
  print('"word": ', word, ' dict_words["word"]: ', dict_words[word])
  if word.isalpha():
    print("alpha word: ", word)
  else:
    print("non-alpha word: ", word)
    for letter in word:
      if letter.isalpha():
        print("alpha letter: ", letter) #, " non-alpha word: ", word)
      else:
        counter_punc += 1
        dict_words[word].append(word.index(letter))
        print("letter: ", letter, " index: ", word.index(letter))
        print('"word": ', word, ' dict_words["word"]: ', dict_words[word])
        # dict_words[word].append()
  print("word: ", word, " counter_punc: ", counter_punc)
  print()
Iterating through the items of this dictionary:
for k,v in dict_words.items():
  print(k,v)
we obtain that for both keys we have the same value, i. e.
[0,1,3]
It is incorrect - it should be for the key
'!,'
the value
[0,1]
and for the key
'Hey!'
the value
[3]


Could anyone point me where the bug is and how to fix it?
I would be grateful for help.
Reply


Messages In This Thread
Adding to the dictionary inside the for-loop - weird behaviour - by InputOutput007 - Jan-20-2021, 08:59 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  Variable definitions inside loop / could be better? gugarciap 2 451 Jan-09-2024, 11:11 PM
Last Post: deanhystad
  How to create a variable only for use inside the scope of a while loop? Radical 10 1,774 Nov-07-2023, 09:49 AM
Last Post: buran
  logger behaviour setdetnet 1 900 Apr-15-2023, 05:20 AM
Last Post: Gribouillis
  can someone explain this __del__ behaviour? rjdegraff42 1 733 Apr-12-2023, 03:25 PM
Last Post: deanhystad
  Asyncio weird behaviour vugz 2 1,267 Apr-09-2023, 01:48 AM
Last Post: vugz
  Weird behaviour using if statement in python 3.10.8 mikepy 23 3,653 Jan-18-2023, 04:51 PM
Last Post: mikepy
  Help adding a loop inside a loop Extra 31 4,623 Oct-23-2022, 12:16 AM
Last Post: Extra
  Generator behaviour bla123bla 2 1,112 Jul-26-2022, 07:30 PM
Last Post: bla123bla
  For Loop and Use of Brackets to Modify Dictionary in Tic-Tac-Toe Game new_coder_231013 7 2,280 Dec-28-2021, 11:32 AM
Last Post: new_coder_231013
  Inconsistent behaviour in output - web scraping Steve 6 2,576 Sep-20-2021, 01:54 AM
Last Post: Larz60+

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020