Idiomatic Python to convert list to dict
craig75
craig.pastro at gmail.com
Thu Jul 10 13:32:52 EDT 2008
On Jul 10, 10:06 am, James Fassett <ja... at reggieband.com> wrote:
> Hi all,
>
> Simple question really on a best practice. I want to avoid adding
> duplicates to a list.
>
> my_list = ['a', 'b', 'c', 'd', 'e']
> dup_map = {}
> for item in my_list:
> dup_map[item] = True
>
> # ... sometime later
>
> for complex_dict in large_list:
> if complex_dict["char"] not in dup_map:
> my_list.append(complex_dict["char"])
> dup_map[complex_dict["char"]] = True
>
> For the first part (generating the duplicate map) is there a more
> idiomatic Python method for flipping the list into a dict?
>
> Is there a better way to achieve the overall objective (as hinted at
> by the above algorithm)?
>
> Thanks in advance for any tips.
>
> James.
The dictionary seems like overkill here because, if I understand
correctly, the only value associated with a key is "True". So in that
case just remove all the code related to the dictionary (and
complex_dict) and you end up with
my_list = ['a', 'b', 'c', 'd', 'e']
# ... sometime later
for char in large_list:
if char not in my_list:
my_list.append(char)
However, as Diez suggests, use a set:
my_list = set(['a', 'b', 'c', 'd', 'e'])
# ... sometime later
for char in large_list:
my_list.add(char) # will not add duplicates
More information about the Python-list
mailing list