Konvertera lista till ordbok i Python

Att konvertera en lista till en ordbok i Python är inte så svårt.

Låt oss kolla in olika sätt att konvertera en lista till en ordbok.

Intro

Innan vi hoppar in i handledningen, låt oss se ett exempel på att konvertera en lista till en ordbok. Vi kommer att ha en lista med tupler (varje tuppel består av två element) eller bara en lista med element. Vi tar både input och konverterar dem till ordböcker.

Exempel:

I följande exempel har vi tagit en lista med tupler och konverterat den till en ordbok. Vi har tagit det första elementet i varje tupel som en nyckel och det andra elementet som ett värde för ordboken.

Inmatning: list_one = [(‘a’, ‘A’), (‘b’, ‘B’), (‘c’, ‘C’)]

Utdata: {’a’: ’A’, ’b’: ’B’, ’c’: ’C’}

I följande exempel har vi tagit en lista med element och konverterat den till en ordbok med alternativa element som nyckel och värde. Vi kommer att ge noll till nyckeln om det inte finns något element kvar för den som nyckel (om listan har ett udda antal element).

Inmatning: list_one = [‘a’, ‘A’, ‘b’, ‘B’, ‘c’, ‘C’, ‘d’]

Utdata:{’a’: ’A’, ’b’: ’B’, ’c’: ’C’, ’d’: Inga}

Vi har sett syftet med handledningen. Och vi kommer att diskutera båda exemplen på olika sätt. Låt oss börja med det första exemplet.

Lista över Tuples – Ordbok

Låt oss se hur man konverterar en lista med tupler till en ordbok. Du kan försöka skriva koden med hjälp av följande steg.

  • Initiera listan över tupler med dummydata enligt exemplen ovan (se till att varje tuppel i listan har exakt två element).
  • Skicka listan över tuples to dict-metoden och den lagrar resultatet i en ny variabel.
  • Det är allt, vi har konverterat en lista med tupler till en ordbok med en enda kodrad.
# list of tuples
list_of_tuples = [('a', 'A'), ('b', 'B'), ('c', 'C')]

# converting to dictionary
list_of_tuples_dict = dict(list_of_tuples)

# printing the result dict
print(list_of_tuples_dict)

Du kan testa ovanstående programutgång genom att köra den. Du får resultatet som vi ser i exemplen.

Lista – Ordbok

Vi har sett hur man konverterar en lista med tupler till en ordbok och det är en enkel sak i Python. I det här avsnittet kommer vi att se hur man konverterar en vanlig lista till en ordbok.

Se det andra exemplet från den första delen av handledningen för att få mer klarhet.

Följ stegen nedan för att skriva koden för det andra exemplet.

Vi har fyllt i standardvärdet som None för elementet som inte kommer att ha något värde (en lista som innehåller ett udda antal element). För det måste vi använda en metod som heter zip_longest från modulen itertools.

  • Importera modulens itertools och initiera en lista med ett udda antal element som anges i exemplen.
  • Konvertera listan till en iterabel för att undvika upprepning av nyckel- och värdepar i metoden zip_longest.
  • Skicka nu den iterbara till metoden zip_longest och fillvalue som None. Det kommer att returnera ett zip-objekt.
    • Vi måste passera iterable två gånger eftersom det tar nyckel och värde från de två iterables. I vårt fall är både nycklar och värden i samma iterable. Så vi måste klara det två gånger före fillvalue.
  • Konvertera objektet till Python-ordboken med dict-metoden.
  • Skriv ut resultatet.
# importing the module
import itertools

# plain list with odd number of elements
plain_list = ['a', 'A', 'b', 'B', 'c', 'C', 'd']

# converting it to iterable to avoid repetition
plain_list_iter = iter(plain_list)

# converting the plain_list to dict
plain_list_dict_object = itertools.zip_longest(plain_list_iter, plain_list_iter, fillvalue=None)

# convert the zip_longest object to dict using `dict`
plain_list_dict = dict(plain_list_dict_object)

# print it
print(plain_list_dict)

Du kan ge fyllvärdet vad du vill. Testa olika saker med den. Och exekvera koden för att se om vi får den exakta utdata som nämns i exemplet eller inte.

Slutsats

Hoppas du tyckte om att konvertera listan till en ordbok. Låt oss träffas i nästa handledning.

Lär dig sedan hur du plattar ut listan i Python.

Glad kodning 🙂

Gillade du att läsa artikeln? Vad sägs om att dela med världen?