简体   繁体   中英

Unique items in python list

I am trying to make a unique collection of dates in a Python list.

Only add a date to the collection if it not already present in the collection.

timestamps = []

timestamps = [
    '2011-02-22', '2011-02-05', '2011-02-04', '2010-12-14', '2010-12-13', 
    '2010-12-12', '2010-12-11', '2010-12-07', '2010-12-02', '2010-11-30', 
    '2010-11-26', '2010-11-23', '2010-11-22', '2010-11-16']

date = "2010-11-22"
if date not in timestamps:
    timestamps.append(date)

How would I sort the list?

You can use sets for this.

date = "2010-11-22"
timestamps = set(['2011-02-22', '2011-02-05', '2011-02-04', '2010-12-14', '2010-12-13', '2010-12-12', '2010-12-11', '2010-12-07', '2010-12-02', '2010-11-30', '2010-11-26', '2010-11-23', '2010-11-22', '2010-11-16'])
#then you can just update it like so
timestamps.update(['2010-11-16']) #if its in there it does nothing
timestamps.update(['2010-12-30']) # it does add it

This code will effectively do nothing. You are referencing the same variable twice ( timestamps ).

So you would have to make two seperate lists:

unique_timestamps= []

timestamps = ['2011-02-22', '2011-02-05', '2011-02-04', '2010-12-14', '2010-12-13', '2010-12-12', '2010-12-11', '2010-12-07', '2010-12-02', '2010-11-30', '2010-11-26', '2010-11-23', '2010-11-22', '2010-11-16']

date="2010-11-22"
if(date not in timestamps):
   unique_timestamps.append(date)

Your condition seems to be correct. If you do not care about the order of the dates though, it might be easier to use a set instead of a list. You would not need any if in this case:

timestamps = set(['2011-02-22', '2011-02-05', '2011-02-04', '2010-12-14', 
                  '2010-12-13', '2010-12-12', '2010-12-11', '2010-12-07',
                  '2010-12-02', '2010-11-30', '2010-11-26', '2010-11-23',
                  '2010-11-22', '2010-11-16'])
timesteps.add("2010-11-22")

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM