Bi-directional Dictionary in Python
See Python: Tips and Tricks for similar articles.Here’s a quick function for creating a bi-directional dictionary in Python:
def bidict(d):
d2 = d.copy()
for k, v in d.items():
if v in d2.keys():
raise KeyError(
"Cannot create bidirectional dict."
+ "Either d has a value that is the same as one of "
+ "its keys or multiple keys have the same value."
)
d2[v] = k
return d2
hellos = {
"Chinese": "你好世界",
"Dutch": "Hello wereld",
"English": "Hello world",
"French": "Bonjour monde",
"German": "Hallo Welt",
"Greek": "γειά σου κόσμος",
"Italian": "Ciao mondo",
"Japanese": "こんにちは世界",
"Korean": "여보세요 세계",
"Portuguese": "Olá mundo",
"Russian": "Здравствулте мир",
"Spanish": "Hola mundo",
}
bidict(hellos)
If your original dictionary has two keys with the same value or has a value that is the same as one its keys, a KeyError
will be thrown.
The new dict will look like this:
{
"Bonjour monde": "French",
"Chinese": "你好世界",
"Ciao mondo": "Italian",
"Dutch": "Hello wereld",
"English": "Hello world",
"French": "Bonjour monde",
"German": "Hallo Welt",
"Greek": "γειά σου κόσμος",
"Hallo Welt": "German",
"Hello wereld": "Dutch",
"Hello world": "English",
"Hola mundo": "Spanish",
"Italian": "Ciao mondo",
"Japanese": "こんにちは世界",
"Korean": "여보세요 세계",
"Olá mundo": "Portuguese",
"Portuguese": "Olá mundo",
"Russian": "Здравствулте мир",
"Spanish": "Hola mundo",
"γειά σου κόσμος": "Greek",
"Здравствулте мир": "Russian",
"こんにちは世界": "Japanese",
"你好世界": "Chinese",
"여보세요 세계": "Korean",
}
If you’re looking for something a little more robust, check out the bidict library.
Related Articles
- Fixing WebVTT Times with Python
- Using Python to Convert Images to WEBP
- Scientific Notation in Python
- Understanding Python’s __main__ variable
- Converting Leading Tabs to Spaces with Python
- pow(x, y, z) more efficient than x**y % z and other options
- A Python Model for Ping Pong Matches
- Bulk Convert Python files to IPython Notebook Files (py to ipynb conversion)
- Python’s date.strftime() slower than str(), split, unpack, and concatenate?
- Basic Python Programming Exercise: A Penny Doubled Every Day
- Bi-directional Dictionary in Python (this article)
- How to find all your Python installations on Windows (and Mac)
- Associate Python Files with IDLE
- Change Default autosave Interval in JupyterLab
- Python: isdigit() vs. isdecimal()
- Python Clocks Explained
- Python Color Constants Module
- Maximum recursion depth exceeded while calling a Python object
- When to use Static Methods in Python? Never
- Finally, a use case for finally – Python Exception Handling
- Creating an Email Decorator with Python and AWS
- Python Coding Challenge: Two People with the Same Birthday
- How to Create a Simple Simulation in Python – Numeric Data
- Collatz Conjecture in Python
- Simple Python Script for Extracting Text from an SRT File
- Python Virtual Environments with venv
- Mapping python to Python 3 on Your Mac
- How to Make IDLE the Default Editor for Python Files on Windows
- How to Do Ternary Operator Assignment in Python
- How to Convert Seconds to Years with Python
- How to Create a Python Package
- How to Read a File with Python
- How to Check the Operating System with Python
- How to Use enumerate() to Print a Numbered List in Python
- How to Repeatedly Append to a String in Python
- Checking your Sitemap for Broken Links with Python
- How to do Simultaneous Assignment in Python
- Visual Studio Code - Opening Files with Python open()
- How to Slice Strings in Python
- How Python Finds Imported Modules
- How to Merge Dictionaries in Python
- How to Index Strings in Python
- How to Create a Tuple in Python