How to construct a set out of list items in python?
--
Music by Eric Matyas
https://www.soundimage.org
Track title: Drifting Through My Dreams
--
Chapters
00:00 Question
00:26 Accepted answer (Score 439)
01:14 Answer 2 (Score 25)
01:35 Answer 3 (Score 21)
02:32 Answer 4 (Score 6)
02:55 Thank you
--
Full question
https://stackoverflow.com/questions/1576...
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#python #list #set
#avk47
ACCEPTED ANSWER
Score 456
If you have a list of hashable objects (filenames would probably be strings, so they should count):
lst = ['foo.py', 'bar.py', 'baz.py', 'qux.py', Ellipsis]
you can construct the set directly:
s = set(lst)
In fact, set will work this way with any iterable object! (Isn't duck typing great?)
If you want to do it iteratively:
s = set()
for item in iterable:
s.add(item)
But there's rarely a need to do it this way. I only mention it because the set.add method is quite useful.
ANSWER 2
Score 27
The most direct solution is this:
s = set(filelist)
The issue in your original code is that the values weren't being assigned to the set. Here's the fixed-up version of your code:
s = set()
for filename in filelist:
s.add(filename)
print(s)
ANSWER 3
Score 22
You can do
my_set = set(my_list)
or, in Python 3,
my_set = {*my_list}
to create a set from a list. Conversely, you can also do
my_list = list(my_set)
or, in Python 3,
my_list = [*my_set]
to create a list from a set.
Just note that the order of the elements in a list is generally lost when converting the list to a set since a set is inherently unordered. (One exception in CPython, though, seems to be if the list consists only of non-negative integers, but I assume this is a consequence of the implementation of sets in CPython and that this behavior can vary between different Python implementations.)
ANSWER 4
Score 6
Here is another solution:
>>>list1=["C:\\","D:\\","E:\\","C:\\"]
>>>set1=set(list1)
>>>set1
set(['E:\\', 'D:\\', 'C:\\'])
In this code I have used the set method in order to turn it into a set and then it removed all duplicate values from the list