Skip to main content
 首页 » 编程设计

python之列表到字典 python

2025年05月04日60mq0036

这是我的 list

myList = ['Bob', '5-10', 170, 'Tom', '5-5', 145, 'Bill', '6-5', '215'] 

我想制作成这样的字典。

{'Bob': ['5-10', 170], 'Bill': ['6-5', '215'], 'Tom': ['5-5', 145]} 

我想到了这个,但它非常难看,而且无法按比例放大。

def MakeDict(): 
    d = {} 
    for x, i  in zip(myList, range(len(myList))): 
       if i in (0, 3, 6): 
           name = x 
       elif i in (1, 4, 7): 
           hieght = x 
       elif i in (2, 5, 8): 
           wieght = x 
          d[name] = [hieght, wieght] 
return d 

我能做什么?

请您参考如下方法:

  • 将您的列表转换为迭代器
  • 现在遍历它以获取 key 。
  • 对于每次迭代调用期间的值 itertools.islice在迭代器上。然后在切片对象上调用 list() 以获取列表。

>>> from itertools import islice 
>>> myList = ['Bob', '5-10', 170, 'Tom', '5-5', 145, 'Bill', '6-5', '215'] 
>>> it = iter(myList) 
>>> {key: list(islice(it, 2)) for key in it} 
{'Bob': ['5-10', 170], 'Bill': ['6-5', '215'], 'Tom': ['5-5', 145]} 

如果您不想导入任何东西,请使用 zip(*[iterator]*n) magic :

>>> {key: [height, weight]  for key, height, weight in zip(*[iter(myList)]*3)} 
{'Bob': ['5-10', 170], 'Bill': ['6-5', '215'], 'Tom': ['5-5', 145]}