Title: Suggestion: Add small clarification on Chapter 22, Example 22-5. explore1.py · Issue #48 · fluentpython/example-code-2e · GitHub
Open Graph Title: Suggestion: Add small clarification on Chapter 22, Example 22-5. explore1.py · Issue #48 · fluentpython/example-code-2e
X Title: Suggestion: Add small clarification on Chapter 22, Example 22-5. explore1.py · Issue #48 · fluentpython/example-code-2e
Description: Hi! I was going through script explore1.py from chapter 22, in particular in the init method and I wrote the following code instead of the code in the script: self.__data = dict(mapping) for key, val in self.__data.items(): if keyword.is...
Open Graph Description: Hi! I was going through script explore1.py from chapter 22, in particular in the init method and I wrote the following code instead of the code in the script: self.__data = dict(mapping) for key, v...
X Description: Hi! I was going through script explore1.py from chapter 22, in particular in the init method and I wrote the following code instead of the code in the script: self.__data = dict(mapping) for key, v...
Opengraph URL: https://github.com/fluentpython/example-code-2e/issues/48
X: @github
Domain: patch-diff.githubusercontent.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Suggestion: Add small clarification on Chapter 22, Example 22-5. explore1.py","articleBody":"Hi!\r\n\r\nI was going through script [explore1.py](https://github.com/fluentpython/example-code-2e/blob/master/22-dyn-attr-prop/oscon/explore1.py) from chapter 22, in particular in the [__init__ method](https://github.com/fluentpython/example-code-2e/blob/master/22-dyn-attr-prop/oscon/explore1.py#L56) and I wrote the following code instead of the code in the script:\r\n\r\n```\r\nself.__data = dict(mapping)\r\nfor key, val in self.__data.items():\r\n if keyword.iskeyword(key):\r\n newkey = key + '_'\r\n self[newkey] = val\r\n self.__data.pop(key)\r\n```\r\n\r\nOf course the above code raised the following exception:\r\n\r\n```\r\nRuntimeError: dictionary keys changed during iteration\r\n```\r\n\r\nWhich googling a bit lead me to the conclusion that modifying containers while looping is something that never should be done and I should use a shallow copy instead if necessary :)\r\n\r\nI'm creating this issue as a suggestion for perhaps a small warning/caution for a future edition. Doing a [quick search in stackoverflow](https://stackoverflow.com/search?q=RuntimeError%3A+dictionary+keys+changed+during+iteration) of the above issue showed me that this is something recurrent, even Alex Martelli did a comment about this 14 years ago [here](https://stackoverflow.com/questions/2315520/in-python-how-do-i-loop-through-the-dictionary-and-change-the-value-if-it-equal/2315529#2315529). Perhaps we can avoid some future Python programmers to stumble across this issue by warning them! 😃 \r\n\r\nBtw, thank you very much for the outstanding book! Looking forward for that next edition 😄 \r\n\r\nBest, \r\n\r\nAndy","author":{"url":"https://github.com/andyLaurito92","@type":"Person","name":"andyLaurito92"},"datePublished":"2024-10-31T00:42:53.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":0},"url":"https://github.com/48/example-code-2e/issues/48"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:62281221-c851-49b7-73a3-1c20255c90d1 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | 91A4:B32AB:29F4CE5:382DB63:69707738 |
| html-safe-nonce | 1547fd2146ff4fbdb34d202989efb1003c3d3d0ab7a61f9a4a1550f41a45254a |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5MUE0OkIzMkFCOjI5RjRDRTU6MzgyREI2Mzo2OTcwNzczOCIsInZpc2l0b3JfaWQiOiI1OTI0NDc3OTM3MTE2MDE4NDg5IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | 6cef962d74760a3ff4ba89f69bc869cb6d21142bc7bee02467d60f43a64fa05f |
| hovercard-subject-tag | issue:2625668858 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/fluentpython/example-code-2e/48/issue_layout |
| twitter:image | https://opengraph.githubassets.com/7d6ce4dda15531246d602009168d6e12ef9b257936b5a60d5bba5531ce2da126/fluentpython/example-code-2e/issues/48 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/7d6ce4dda15531246d602009168d6e12ef9b257936b5a60d5bba5531ce2da126/fluentpython/example-code-2e/issues/48 |
| og:image:alt | Hi! I was going through script explore1.py from chapter 22, in particular in the init method and I wrote the following code instead of the code in the script: self.__data = dict(mapping) for key, v... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | andyLaurito92 |
| hostname | github.com |
| expected-hostname | github.com |
| None | 9920a62ba22d06470388e2904804fb7e5ec51c9e35f81784e9191394c74b2bd2 |
| turbo-cache-control | no-preview |
| go-import | github.com/fluentpython/example-code-2e git https://github.com/fluentpython/example-code-2e.git |
| octolytics-dimension-user_id | 9216311 |
| octolytics-dimension-user_login | fluentpython |
| octolytics-dimension-repository_id | 176997413 |
| octolytics-dimension-repository_nwo | fluentpython/example-code-2e |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 176997413 |
| octolytics-dimension-repository_network_root_nwo | fluentpython/example-code-2e |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 7d6181066430cc06553c8396ca201e194ae33cb9 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width