簡體   English   中英

如何從python中的列表列表中創建字典?

[英]How to create a dictionary out of a list of lists in python?

假設我的清單中有以下清單

list1 = [['a','b'],['a'],['b','c'],['c','d'],['b'], ['a','d']]

我想知道是否有一種方法可以轉換字典中所有新字典將使用相同鍵的list1每個元素。 例如:如果['a']獲取要{'a':1}['b']獲取要{'b':2}我想為所有鍵a的值1並用於所有鍵b的值為2 因此,在創建['a','b']字典時,我想變成{'a':1, 'b':2}

到目前為止,我發現了從列表列表中創建字典的方法,但是使用第一個元素作為鍵,而將列表的其余部分用作值:

請注意,這不是我感興趣的。我想要從list1獲得的結果是這樣的:

dict_list1 = [{'a':1,'b':2}, {'a':1}, {'b':2,'c':3}, {'c':3,'d':4}, {'b':2}, {'a':1,'d':4}]

我對那個數字的項目不感興趣,但是對每個不同的鍵的數字都是相同的。

您需要先聲明您的映射:

mapping = dict(a=1, b=2, c=3, d=4)

然后,您可以使用dict理解:

[{e: mapping[e] for e in li} for li in list1]
# [{'a': 1, 'b': 2}, {'a': 1}, {'b': 2, 'c': 3}, {'c': 3, 'd': 4}, {'b': 2}, {'a': 1, 'd': 4}]

使用chainOrderedDict可以進行自動映射

from itertools import chain
from collections import OrderedDict

list1 = [['a','b'],['a'],['b','c'],['c','d'],['b'], ['a','d']]
# do flat list for auto index
flat_list = list(chain(*list1))
# remove duplicates
flat_list = list(OrderedDict.fromkeys(flat_list))
mapping = {x:flat_list.index(x)+1 for x in set(flat_list)}

[{e: mapping[e] for e in li} for li in list1]

在這里,嘗試一下ord()同樣適用於大寫字母和小寫字母:

[{e: ord(e)%32 for e in li} for li in list1]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM