{"id":15628945,"url":"https://github.com/pwwang/dotdict-bench","last_synced_at":"2026-03-07T11:04:03.034Z","repository":{"id":76855176,"uuid":"539790682","full_name":"pwwang/dotdict-bench","owner":"pwwang","description":"Benchmarking for dot-accessible dict packages in python","archived":false,"fork":false,"pushed_at":"2022-09-22T06:16:41.000Z","size":28,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-10-05T20:14:36.530Z","etag":null,"topics":["dictionaries","dictionaries-in-python","dictionary","dot-access","dot-notation"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pwwang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-09-22T04:00:47.000Z","updated_at":"2023-03-21T17:10:13.000Z","dependencies_parsed_at":null,"dependency_job_id":"967b249e-2d4a-4c7d-a424-7cbcb40324de","html_url":"https://github.com/pwwang/dotdict-bench","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/pwwang/dotdict-bench","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pwwang%2Fdotdict-bench","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pwwang%2Fdotdict-bench/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pwwang%2Fdotdict-bench/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pwwang%2Fdotdict-bench/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pwwang","download_url":"https://codeload.github.com/pwwang/dotdict-bench/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pwwang%2Fdotdict-bench/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30212103,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-07T09:02:10.694Z","status":"ssl_error","status_checked_at":"2026-03-07T09:02:08.429Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dictionaries","dictionaries-in-python","dictionary","dot-access","dot-notation"],"created_at":"2024-10-03T10:24:56.781Z","updated_at":"2026-03-07T11:03:58.026Z","avatar_url":"https://github.com/pwwang.png","language":"Python","readme":"# dotdict-bench\n\nBenchmarking for dot-accessible dict packages in python\n\n[![deps](https://img.shields.io/librariesio/release/pypi/dotdict-bench?style=flat-square)](https://libraries.io/github/pwwang/dotdict-bench#repository_dependencies)\n\nMore test ideas? [Submit an issue](https://github.com/pwwang/dotdict-bench/issues)!\n\n\n## Package Information\n\nAs of 2022-09-21 23:11:19.354375\n\n|Package|Version|Last Commit|Stars|Forks|Description|\n|-------|-------|-----------|-----|-----|-----------|\n|\u003ca target=\"_blank\" href=\"https://github.com/mewwts/addict\"\u003eaddict\u003c/a\u003e|2.4.0|Tue, 05 Jan 2021 07:16:38 GMT|2277|137|[(i)](# \"The Python Dict that's better than heroin.\")|\n|\u003ca target=\"_blank\" href=\"https://github.com/cdgriffith/Box\"\u003epython-box\u003c/a\u003e|6.0.2|Sat, 02 Apr 2022 02:24:21 GMT|2062|89|[(i)](# \"Python dictionaries with advanced dot notation access\")|\n|\u003ca target=\"_blank\" href=\"https://github.com/drgrib/dotmap\"\u003edotmap\u003c/a\u003e|1.3.30|Wed, 06 Apr 2022 16:26:33 GMT|366|43|[(i)](# \"Dot access dictionary with dynamic hierarchy creation and ordered iteration\")|\n|\u003ca target=\"_blank\" href=\"https://github.com/rnag/dotwiz\"\u003edotwiz\u003c/a\u003e|0.4.0|Wed, 21 Sep 2022 22:23:19 GMT|20|1|[(i)](# \"A blazing fast dict subclass that supports dot access notation.\")|\n|\u003ca target=\"_blank\" href=\"https://github.com/makinacorpus/easydict\"\u003eeasydict\u003c/a\u003e|1.9|Sun, 28 Feb 2021 10:26:53 GMT|207|39|[(i)](# \"Access dict values as attributes (works recursively)\")|\n|\u003ca target=\"_blank\" href=\"https://github.com/polydojo/dotsi\"\u003edotsi\u003c/a\u003e|0.0.3|Sun, 22 Nov 2020 16:48:22 GMT|18|1|[(i)](# \"Dot-accessible, update-aware Python dicts (\u0026 lists). Works recursively, like a charm.\")|\n|\u003ca target=\"_blank\" href=\"https://github.com/srevenant/dictlib\"\u003edictlib\u003c/a\u003e|1.1.5|Thu, 15 Aug 2019 23:10:47 GMT|14|3|[(i)](# \"python: a lightweight add-on for dictionaries, featuring deep dictionary union, dictionary keys as object attributes (in code dict.key.sub.value notation) as well as a separate string dig/dug for using strings with dot notation on native dictionaries\")|\n|\u003ca target=\"_blank\" href=\"https://github.com/pwwang/diot\"\u003ediot\u003c/a\u003e|0.1.6|Thu, 12 May 2022 20:37:59 GMT|7|2|[(i)](# \"Python dictionary with dot notation\")|\n\n## Creating an object of the dict subclass\n\nHow the packages create an object of the dict subclass\n\n| |Created|\n|-|-----------------------|\n|\u003ca target=\"_blank\" href=\"https://github.com/mewwts/addict\"\u003eaddict\u003c/a\u003e|`{'a': {'b': {'c': 1}}}` **Type**: `Dict`|\n|\u003ca target=\"_blank\" href=\"https://github.com/cdgriffith/Box\"\u003epython-box\u003c/a\u003e|`{'a': {'b': {'c': 1}}}` **Type**: `Box`|\n|\u003ca target=\"_blank\" href=\"https://github.com/drgrib/dotmap\"\u003edotmap\u003c/a\u003e|`DotMap(a=DotMap(b=DotMap(c=1)))` **Type**: `DotMap`|\n|\u003ca target=\"_blank\" href=\"https://github.com/rnag/dotwiz\"\u003edotwiz\u003c/a\u003e|`✫(a=✫(b=✫(c=1)))` **Type**: `DotWiz`|\n|\u003ca target=\"_blank\" href=\"https://github.com/makinacorpus/easydict\"\u003eeasydict\u003c/a\u003e|`{'a': {'b': {'c': 1}}}` **Type**: `EasyDict`|\n|\u003ca target=\"_blank\" href=\"https://github.com/polydojo/dotsi\"\u003edotsi\u003c/a\u003e|`{'a': {'b': {'c': 1}}}` **Type**: `DotsiDict`|\n|\u003ca target=\"_blank\" href=\"https://github.com/srevenant/dictlib\"\u003edictlib\u003c/a\u003e|`{'a': {'b': {'c': 1}}}` **Type**: `Dict`|\n|\u003ca target=\"_blank\" href=\"https://github.com/pwwang/diot\"\u003ediot\u003c/a\u003e|`{'a': Diot({'b': Diot({'c': 1})})}` **Type**: `Diot`|\n\n## Creating a dict with preserved keys\n\nHow the packages create a dict with preserved keys\n(e.g. `keys`, `values`, `items`, etc)\n\nLiterally, `{\"keys\": 1}`\n\n\n| |Created or error|\n|-|-----------------------|\n|\u003ca target=\"_blank\" href=\"https://github.com/mewwts/addict\"\u003eaddict\u003c/a\u003e|{'keys': 1}|\n|\u003ca target=\"_blank\" href=\"https://github.com/cdgriffith/Box\"\u003epython-box\u003c/a\u003e|{'keys': 1}|\n|\u003ca target=\"_blank\" href=\"https://github.com/drgrib/dotmap\"\u003edotmap\u003c/a\u003e|DotMap(keys=1)|\n|\u003ca target=\"_blank\" href=\"https://github.com/rnag/dotwiz\"\u003edotwiz\u003c/a\u003e|✫(keys=1)|\n|\u003ca target=\"_blank\" href=\"https://github.com/makinacorpus/easydict\"\u003eeasydict\u003c/a\u003e|{'keys': 1}|\n|\u003ca target=\"_blank\" href=\"https://github.com/polydojo/dotsi\"\u003edotsi\u003c/a\u003e|{'keys': 1}|\n|\u003ca target=\"_blank\" href=\"https://github.com/srevenant/dictlib\"\u003edictlib\u003c/a\u003e|Key 'keys' conflicts with reserved word|\n|\u003ca target=\"_blank\" href=\"https://github.com/pwwang/diot\"\u003ediot\u003c/a\u003e|{'keys': 1}|\n\n## Creating a dict with magic keys\n\nHow the packages create a dict with magic keys\n(e.g. `__name__`, `__class__`, etc)\n\nLiterally, `{\"__name__\": 1}`\n\n\n| |Created or error|\n|-|-----------------------|\n|\u003ca target=\"_blank\" href=\"https://github.com/mewwts/addict\"\u003eaddict\u003c/a\u003e|`{'__name__': 1}`|\n|\u003ca target=\"_blank\" href=\"https://github.com/cdgriffith/Box\"\u003epython-box\u003c/a\u003e|`{'__name__': 1}`|\n|\u003ca target=\"_blank\" href=\"https://github.com/drgrib/dotmap\"\u003edotmap\u003c/a\u003e|`DotMap(__name__=1)`|\n|\u003ca target=\"_blank\" href=\"https://github.com/rnag/dotwiz\"\u003edotwiz\u003c/a\u003e|`✫(__name__=1)`|\n|\u003ca target=\"_blank\" href=\"https://github.com/makinacorpus/easydict\"\u003eeasydict\u003c/a\u003e|`{'__name__': 1}`|\n|\u003ca target=\"_blank\" href=\"https://github.com/polydojo/dotsi\"\u003edotsi\u003c/a\u003e|`{'__name__': 1}`|\n|\u003ca target=\"_blank\" href=\"https://github.com/srevenant/dictlib\"\u003edictlib\u003c/a\u003e|`{'__name__': 1}`|\n|\u003ca target=\"_blank\" href=\"https://github.com/pwwang/diot\"\u003ediot\u003c/a\u003e|`{'__name__': 1}`|\n\n## Accessing values\n\nHow the packages to access values\n\nLiterally `1` from `{\"a\": {\"b\": {\"c\": 1}}}`\n\n\n| |Way to access value|\n|-|-----------------------|\n|\u003ca target=\"_blank\" href=\"https://github.com/mewwts/addict\"\u003eaddict\u003c/a\u003e|`\u003cdict\u003e.a.b.c` or `\u003cdict\u003e['a']['b']['c']`|\n|\u003ca target=\"_blank\" href=\"https://github.com/cdgriffith/Box\"\u003epython-box\u003c/a\u003e|`\u003cdict\u003e.a.b.c` or `\u003cdict\u003e['a']['b']['c']`|\n|\u003ca target=\"_blank\" href=\"https://github.com/drgrib/dotmap\"\u003edotmap\u003c/a\u003e|`\u003cdict\u003e.a.b.c` or `\u003cdict\u003e['a']['b']['c']`|\n|\u003ca target=\"_blank\" href=\"https://github.com/rnag/dotwiz\"\u003edotwiz\u003c/a\u003e|`\u003cdict\u003e.a.b.c` or `\u003cdict\u003e['a']['b']['c']`|\n|\u003ca target=\"_blank\" href=\"https://github.com/makinacorpus/easydict\"\u003eeasydict\u003c/a\u003e|`\u003cdict\u003e.a.b.c` or `\u003cdict\u003e['a']['b']['c']`|\n|\u003ca target=\"_blank\" href=\"https://github.com/polydojo/dotsi\"\u003edotsi\u003c/a\u003e|`\u003cdict\u003e.a.b.c` or `\u003cdict\u003e['a']['b']['c']`|\n|\u003ca target=\"_blank\" href=\"https://github.com/srevenant/dictlib\"\u003edictlib\u003c/a\u003e|`dictlib.dig(\u003cdict\u003e, 'a.b.c')` or `dictlib.Dict(\u003cdict\u003e).a.b.c`|\n|\u003ca target=\"_blank\" href=\"https://github.com/pwwang/diot\"\u003ediot\u003c/a\u003e|`\u003cdict\u003e.a.b.c` or `\u003cdict\u003e['a']['b']['c']`|\n\n## Recursive Dot Access\n\nWhether recursive dot access is supported when there are lists\nin the dict\n\nLiterally `\u003cdict\u003e.a.b[0].c` from `{\"a\": {\"b\": [{\"c\": 1}, {\"d\": 2}]}}`\n\n\n| |Value or error|\n|-|-----------------------|\n|\u003ca target=\"_blank\" href=\"https://github.com/mewwts/addict\"\u003eaddict\u003c/a\u003e|`1`|\n|\u003ca target=\"_blank\" href=\"https://github.com/cdgriffith/Box\"\u003epython-box\u003c/a\u003e|`1`|\n|\u003ca target=\"_blank\" href=\"https://github.com/drgrib/dotmap\"\u003edotmap\u003c/a\u003e|`1`|\n|\u003ca target=\"_blank\" href=\"https://github.com/rnag/dotwiz\"\u003edotwiz\u003c/a\u003e|`1`|\n|\u003ca target=\"_blank\" href=\"https://github.com/makinacorpus/easydict\"\u003eeasydict\u003c/a\u003e|`1`|\n|\u003ca target=\"_blank\" href=\"https://github.com/polydojo/dotsi\"\u003edotsi\u003c/a\u003e|`1`|\n|\u003ca target=\"_blank\" href=\"https://github.com/srevenant/dictlib\"\u003edictlib\u003c/a\u003e|AttributeError: 'dict' object has no attribute 'c'|\n|\u003ca target=\"_blank\" href=\"https://github.com/pwwang/diot\"\u003ediot\u003c/a\u003e|`1`|\n\n## Automatic Hierarchy\n\nWhether a hierarchical structure is created by dot notation\n\nLiterally `\u003cdict\u003e.a.b.c = 1` creates `{\"a\": {\"b\": {\"c\": 1}}}`\n\n\n| |Created or error|\n|-|-----------------------|\n|\u003ca target=\"_blank\" href=\"https://github.com/mewwts/addict\"\u003eaddict\u003c/a\u003e|`{'a': {'b': {'c': 1}}}`|\n|\u003ca target=\"_blank\" href=\"https://github.com/cdgriffith/Box\"\u003epython-box\u003c/a\u003e|KeyError: \"'Box' object has no attribute 'a'\"|\n|\u003ca target=\"_blank\" href=\"https://github.com/drgrib/dotmap\"\u003edotmap\u003c/a\u003e|`DotMap(a=DotMap(b=DotMap(c=1)))`|\n|\u003ca target=\"_blank\" href=\"https://github.com/rnag/dotwiz\"\u003edotwiz\u003c/a\u003e|AttributeError: 'DotWiz' object has no attribute 'a'|\n|\u003ca target=\"_blank\" href=\"https://github.com/makinacorpus/easydict\"\u003eeasydict\u003c/a\u003e|AttributeError: 'EasyDict' object has no attribute 'a'|\n|\u003ca target=\"_blank\" href=\"https://github.com/polydojo/dotsi\"\u003edotsi\u003c/a\u003e|KeyError: 'a'|\n|\u003ca target=\"_blank\" href=\"https://github.com/srevenant/dictlib\"\u003edictlib\u003c/a\u003e|KeyError: 'a'|\n|\u003ca target=\"_blank\" href=\"https://github.com/pwwang/diot\"\u003ediot\u003c/a\u003e|AttributeError: a|\n\n## Accessing values with preserved keys\n\nHow to access values with conflict keys\n\nLiterally, accessing values from `{\"keys\": 1, \"__name__\": 2}`\n\n\n|Package|`obj.keys`|`obj['keys']`|`obj.__name__`|`obj['__name__']`|\n|---|---|---|---|---|\n|\u003ca target=\"_blank\" href=\"https://github.com/mewwts/addict\"\u003eaddict\u003c/a\u003e|`\u003cbuilt-in method keys of Dict object at 0x7f4455a49c70\u003e`|`1`|`2`|`2`|\n|\u003ca target=\"_blank\" href=\"https://github.com/cdgriffith/Box\"\u003epython-box\u003c/a\u003e|`\u003cbound method Box.keys of Box({'keys': 1, '__name__': 2})\u003e`|`1`|`2`|`2`|\n|\u003ca target=\"_blank\" href=\"https://github.com/drgrib/dotmap\"\u003edotmap\u003c/a\u003e|`\u003cbound method DotMap.keys of DotMap(keys=1, __name__=2)\u003e`|`1`|`AttributeError: __name__`|`2`|\n|\u003ca target=\"_blank\" href=\"https://github.com/rnag/dotwiz\"\u003edotwiz\u003c/a\u003e|`1`|`1`|`2`|`2`|\n|\u003ca target=\"_blank\" href=\"https://github.com/makinacorpus/easydict\"\u003eeasydict\u003c/a\u003e|`1`|`1`|`2`|`2`|\n|\u003ca target=\"_blank\" href=\"https://github.com/polydojo/dotsi\"\u003edotsi\u003c/a\u003e|`\u003cbuilt-in method keys of DotsiDict object at 0x7f4455a49c70\u003e`|`1`|`2`|`2`|\n|\u003ca target=\"_blank\" href=\"https://github.com/srevenant/dictlib\"\u003edictlib\u003c/a\u003e|`Can't create`|`Can't create`|`Can't create`|`Can't create`|\n|\u003ca target=\"_blank\" href=\"https://github.com/pwwang/diot\"\u003ediot\u003c/a\u003e|`\u003cbuilt-in method keys of Diot object at 0x7f4455a49c70\u003e`|`1`|`2`|`2`|\n\n## Accessing dashed keys\n\nHow the values with keys with dash are accessed\n\nLiterally `\u003cdict\u003e.a_b` for `{\"a-b\": 1}`\n\n\n|Package|`obj.a_b`|`obj['a_b']`|`obj['a-b']`|\n|---|---|---|---|\n|\u003ca target=\"_blank\" href=\"https://github.com/mewwts/addict\"\u003eaddict\u003c/a\u003e|`{}`|`{}`|`1`|\n|\u003ca target=\"_blank\" href=\"https://github.com/cdgriffith/Box\"\u003epython-box\u003c/a\u003e|`1`|`KeyError: \"'a_b'\"`|`1`|\n|\u003ca target=\"_blank\" href=\"https://github.com/drgrib/dotmap\"\u003edotmap\u003c/a\u003e|`DotMap()`|`DotMap()`|`1`|\n|\u003ca target=\"_blank\" href=\"https://github.com/rnag/dotwiz\"\u003edotwiz\u003c/a\u003e|`AttributeError: 'DotWiz' object has no attribute 'a_b'`|`KeyError: 'a_b'`|`1`|\n|\u003ca target=\"_blank\" href=\"https://github.com/makinacorpus/easydict\"\u003eeasydict\u003c/a\u003e|`AttributeError: 'EasyDict' object has no attribute 'a_b'`|`KeyError: 'a_b'`|`1`|\n|\u003ca target=\"_blank\" href=\"https://github.com/polydojo/dotsi\"\u003edotsi\u003c/a\u003e|`KeyError: 'a_b'`|`KeyError: 'a_b'`|`1`|\n|\u003ca target=\"_blank\" href=\"https://github.com/srevenant/dictlib\"\u003edictlib\u003c/a\u003e|`1`|`1`|`1`|\n|\u003ca target=\"_blank\" href=\"https://github.com/pwwang/diot\"\u003ediot\u003c/a\u003e|`1`|`1`|`1`|\n\n## Frozen Dict Support\n\nWhether the packages support frozen dicts\n\n| |Support? and how?|\n|-|-----------------------|\n|\u003ca target=\"_blank\" href=\"https://github.com/mewwts/addict\"\u003eaddict\u003c/a\u003e|`\u003cdict\u003e.freeze()/.unfreeze()`|\n|\u003ca target=\"_blank\" href=\"https://github.com/cdgriffith/Box\"\u003epython-box\u003c/a\u003e|`Box(\u003cdict\u003e, frozen_box=True)`|\n|\u003ca target=\"_blank\" href=\"https://github.com/drgrib/dotmap\"\u003edotmap\u003c/a\u003e|Not supported|\n|\u003ca target=\"_blank\" href=\"https://github.com/rnag/dotwiz\"\u003edotwiz\u003c/a\u003e|Not supported|\n|\u003ca target=\"_blank\" href=\"https://github.com/makinacorpus/easydict\"\u003eeasydict\u003c/a\u003e|Not supported|\n|\u003ca target=\"_blank\" href=\"https://github.com/polydojo/dotsi\"\u003edotsi\u003c/a\u003e|Not supported|\n|\u003ca target=\"_blank\" href=\"https://github.com/srevenant/dictlib\"\u003edictlib\u003c/a\u003e|Not supported|\n|\u003ca target=\"_blank\" href=\"https://github.com/pwwang/diot\"\u003ediot\u003c/a\u003e|`FrozenDiot(\u003cdict\u003e)` or `Diot(\u003cdict\u003e, diot_frozen=True)`|\n\n## Key transformation support\n\nWhether the packages support key transformation for dot access\n\nFor example: making `\u003cdict\u003e.a_b` to access value from `{\"a.b\": 1}`\n\n\n| |Support? and how?|\n|-|-----------------------|\n|\u003ca target=\"_blank\" href=\"https://github.com/mewwts/addict\"\u003eaddict\u003c/a\u003e|Not supported|\n|\u003ca target=\"_blank\" href=\"https://github.com/cdgriffith/Box\"\u003epython-box\u003c/a\u003e|Using Conversion Box or Camel Killer Box|\n|\u003ca target=\"_blank\" href=\"https://github.com/drgrib/dotmap\"\u003edotmap\u003c/a\u003e|Not supported|\n|\u003ca target=\"_blank\" href=\"https://github.com/rnag/dotwiz\"\u003edotwiz\u003c/a\u003e|`DotWizPlus` turns special-cased keys, such as names with spaces, into valid snake_case words|\n|\u003ca target=\"_blank\" href=\"https://github.com/makinacorpus/easydict\"\u003eeasydict\u003c/a\u003e|Not supported|\n|\u003ca target=\"_blank\" href=\"https://github.com/polydojo/dotsi\"\u003edotsi\u003c/a\u003e|Not supported|\n|\u003ca target=\"_blank\" href=\"https://github.com/srevenant/dictlib\"\u003edictlib\u003c/a\u003e|Not supported|\n|\u003ca target=\"_blank\" href=\"https://github.com/pwwang/diot\"\u003ediot\u003c/a\u003e|Support custom transform function: `Diot(..., diot_transform =...)`|\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpwwang%2Fdotdict-bench","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpwwang%2Fdotdict-bench","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpwwang%2Fdotdict-bench/lists"}