Table of Contents
1. Using set() (Fastest, but doesn't preserve order)
2. Using dict.fromkeys() (Preserves order and is efficient)
3. Using a loop for complex cases (Maximum control)
4. Using list comprehension with a helper set (Order preserved, good performance)
Summary: Which method to choose?
Home Backend Development Python Tutorial How to remove duplicate items from a list in Python

How to remove duplicate items from a list in Python

Aug 14, 2025 pm 12:10 PM
python List deduplication

To remove duplicates in the list, if the order is not required, you can use list(set(original_list)), which is the fastest but does not guarantee the order; if the order is required, it is recommended to list(dict.fromkeys(original_list)), which is efficient and maintains the insertion order in Python 3.7; for dictionaries and other non-hashable types or custom deduplication logic, a loop should be used to manually control it with the seeen list or collection; if complex structures are processed, it can be converted and processed through json.dumps() or tuple(). In summary, dict.fromkeys() is generally the best choice to take into account performance, readability and order preservation.

How to remove duplicate items from a list in Python

Removing duplicate items from a list in Python is a common task, and there are several ways to do it depending on your needs—like whether you need to preserve the original order or not. Here are the most practical methods:

1. Using set() (Fastest, but doesn't preserve order)

If the order of elements doesn't matter, converting the list to a set is the quickest way to remove duplicates, since sets only store unique values.

 original_list = [3, 1, 2, 2, 1, 3, 4]
unique_list = list(set(original_list))
print(unique_list) # Output might be: [1, 2, 3, 4]

⚠️ Note: The order of items is not guaranteed because sets are unordered collections.

This method is efficient for large lists when order isn't important.


2. Using dict.fromkeys() (Preserves order and is efficient)

Starting from Python 3.7, dictionaries preserve insertion order. You can use dict.fromkeys() to remove duplicates while keeping the original order.

 original_list = [3, 1, 2, 2, 1, 3, 4]
unique_list = list(dict.fromkeys(original_list))
print(unique_list) # Output: [3, 1, 2, 4]

This is generally the best approach when you want to keep the first occurrence of each item and maintain order.

  • It's fast (similar performance to using a set)
  • Preserves order
  • Handles unhashable types? No — only works with hashable items (like numbers, strings, tuples)

3. Using a loop for complex cases (Maximum control)

If you're dealing with unhashable types like dictionaries or lists, or need custom logic to determine duplicates, use a loop.

 original_list = [{'id': 1}, {'id': 2}, {'id': 1}]
unique_list = []
seen = []

for item in original_list:
    if item['id'] not in seen:
        see.append(item['id'])
        unique_list.append(item)

print(unique_list) # Output: [{'id': 1}, {'id': 2}]

This method is slower for large data but gives you full control. You can define what makes items "duplicate" (eg, based on a key).

Alternatively, for unhashable types, you might use a more advanced approach with json.dumps() or tuple() conversion if structure allows.


4. Using list comprehension with a helper set (Order preserved, good performance)

You can manually track see items using a set during iteration:

 original_list = [3, 1, 2, 2, 1, 3, 4]
see = set()
unique_list = []

for item in original_list:
    if item not in see:
        seen.add(item)
        unique_list.append(item)

print(unique_list) # Output: [3, 1, 2, 4]

This is slightly more verbose than dict.fromkeys() , but useful when you need to apply extra logic during filtering.


Summary: Which method to choose?

  • Preserve order & simple data?list(dict.fromkeys(my_list))
  • Don't care about order?list(set(my_list))
  • Dealing with dictionaries or custom logic? → Use a loop with a tracking variable
  • ⚠️ List contains lists or unhashable items? → You'll need to convert or compare manually

Most of the time, dict.fromkeys() is the sweet spot for readingability, speed, and order preservation.

Basically, pick the method that fits your data and requirements.

The above is the detailed content of How to remove duplicate items from a list in Python. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undress AI Tool

Undress AI Tool

Undress images for free

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

PHP Tutorial
1545
276
What is sentiment analysis in cryptocurrency trading? What is sentiment analysis in cryptocurrency trading? Aug 14, 2025 am 11:15 AM

Table of Contents What is sentiment analysis in cryptocurrency trading? Why sentiment analysis is important in cryptocurrency investment Key sources of emotion data a. Social media platform b. News media c. Tools for sentiment analysis and technology Commonly used tools in sentiment analysis: Techniques adopted: Integrate sentiment analysis into trading strategies How traders use it: Strategy example: Assuming BTC trading scenario scenario setting: Emotional signal: Trader interpretation: Decision: Results: Limitations and risks of sentiment analysis Using emotions for smarter cryptocurrency trading Understanding market sentiment is becoming increasingly important in cryptocurrency trading. A recent 2025 study by Hamid

How to handle large datasets in Python that don't fit into memory? How to handle large datasets in Python that don't fit into memory? Aug 14, 2025 pm 01:00 PM

When processing large data sets that exceed memory in Python, they cannot be loaded into RAM at one time. Instead, strategies such as chunking processing, disk storage or streaming should be adopted; CSV files can be read in chunks through Pandas' chunksize parameters and processed block by block. Dask can be used to realize parallelization and task scheduling similar to Pandas syntax to support large memory data operations. Write generator functions to read text files line by line to reduce memory usage. Use Parquet columnar storage format combined with PyArrow to efficiently read specific columns or row groups. Use NumPy's memmap to memory map large numerical arrays to access data fragments on demand, or store data in lightweight data such as SQLite or DuckDB.

How to debug Python code in Sublime Text? How to debug Python code in Sublime Text? Aug 14, 2025 pm 04:51 PM

UseSublimeText’sbuildsystemtorunPythonscriptsandcatcherrorsbypressingCtrl Baftersettingthecorrectbuildsystemorcreatingacustomone.2.Insertstrategicprint()statementstocheckvariablevalues,types,andexecutionflow,usinglabelsandrepr()forclarity.3.Installth

How to debug your Python code How to debug your Python code Aug 13, 2025 am 12:18 AM

Useprint()statementstocheckvariablevaluesandexecutionflow,addinglabelsandtypesforclarity,andremovethembeforecommitting;2.UsethePythondebugger(pdb)withbreakpoint()topauseexecution,inspectvariables,andstepthroughcodeinteractively;3.Handleexceptionsusin

How to run Python code in Sublime Text? How to run Python code in Sublime Text? Aug 16, 2025 am 04:58 AM

Make sure that Python is installed and added to the system PATH, run python--version or python3--version verification through the terminal; 2. Save the Python file as a .py extension, such as hello.py; 3. Create a custom build system in SublimeText, Windows users use {"cmd":["python","-u","$file"]}, macOS/Linux users use {"cmd":["python3

How to debug a Python script in VSCode How to debug a Python script in VSCode Aug 16, 2025 am 02:53 AM

To debug Python scripts, you need to first install the Python extension and configure the interpreter, then create a launch.json file to set the debugging configuration, then set a breakpoint in the code and press F5 to start the debugging. The script will be paused at the breakpoint, allowing checking variables and step-by-step execution. Finally, by checking the problem by viewing the console output, adding logs or adjusting parameters, etc., to ensure that the debugging process is simple and efficient after the environment is correct.

How to automatically format Python code in VSCode How to automatically format Python code in VSCode Aug 14, 2025 pm 04:10 PM

ToautomaticallyformatPythoncodeinVSCode,installBlackusingpipinstallblack,installtheofficialMicrosoftPythonextension,setBlackastheformatterinsettings.jsonwith"python.formatting.provider":"black",enableformatonsavebyadding"edit

How does the yield keyword work in Python How does the yield keyword work in Python Aug 15, 2025 am 08:23 AM

The yield keyword is used to define a generator function, so that it can pause execution and return values one by one, and then recover from the pause; the generator function returns a generator object, has lazy evaluation characteristics, and can save memory. It is suitable for handling scenarios such as large files, streaming data, and infinite sequences. The generator is an iterator that supports next() and for loops, but cannot be rewind and must be recreated to iterate again.

See all articles