使用字典推导式从嵌套列表创建字典

3
有没有一种方法可以创建一个嵌套列表的字典,但只针对特定的索引?
我输入了以下内容:
 data = [[int, int, int], [int, int, int], [int, int,int]]

我想做类似于以下内容的事情:

my_dictionary = {}
    for x in data:
       my_dictionary[x[0]] = []
       my_dictionary[x[1]] = []

但是不需要遍历整个内容。
例如:
data = [[a,b,c], [d,e,f], [g,h,i]] 
# would leave me with:
my_dictionary = {a: [] , b:[], d:[], e:[], g:[], h:[] }

有没有一种使用字典推导来指定这个的方法?

你的“specific indices”是什么,你期望的输出是什么?你能在问题中添加一个最小完整可验证示例吗? - Mazdak
2个回答

1

只需这样做:

>>> data
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> {d[i]:[] for i in (0,1) for d in data}
{1: [], 2: [], 4: [], 5: [], 7: [], 8: []}

0

由于您只需要前两列,因此可以直接循环它们。您可以使用嵌套的列表推导式从前两列创建一个扁平列表,并使用dict.fromkeys通过指定公共值从可迭代对象创建字典,并使用collections.OrderedDict()以保持顺序:

>>> from collections import OrderedDict
>>> my_dict = OrderedDict.fromkeys([i for sub in data for i in sub[:2]],[])
>>> my_dict
OrderedDict([('a', []), ('b', []), ('d', []), ('e', []), ('g', []), ('h', [])])
>>> my_dict['a']
[]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接