首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从特定python列表创建字典

如何从特定python列表创建字典
EN

Stack Overflow用户
提问于 2013-07-17 04:56:14
回答 3查看 88关注 0票数 2

我有一个python列表:

代码语言:javascript
复制
[('Three', 8), ('Nine', 9), ('Two', 4), ('Two', 5), ('One', 0), ('One', 1), ('One', 6)]

我想创建一个python字典:

代码语言:javascript
复制
{ 'One', [0,1,6], 'Two':[4,5], 'Three':[8], 'Nine':[9] }

我如何使用列表理解来做这件事呢?我试图创建具有属于相同字符串值的数字的列表,但我不知道如何在列表理解中动态创建列表。

EN

回答 3

Stack Overflow用户

发布于 2013-07-17 04:58:16

只需使用常规的for循环:

代码语言:javascript
复制
from collections import defaultdict

d = defaultdict(list)

for key, value in your_list:
    d[key].append(value)
票数 6
EN

Stack Overflow用户

发布于 2013-07-17 05:00:40

我会使用defaultdict,但是如果你真的想尝试理解,你可以试试

代码语言:javascript
复制
{k : [v for kk, v in l if k == kk] for k in set(i for i, _ in l)}
{'Nine': [9], 'One': [0, 1, 6], 'Three': [8], 'Two': [4, 5]}

出于效率和可读性的原因,我不推荐使用它。

票数 1
EN

Stack Overflow用户

发布于 2013-07-17 05:06:17

代码语言:javascript
复制
>>> from operator import itemgetter as get
>>> from itertools import groupby as gb
>>> l = [('Three', 8), ('Nine', 9), ('Two', 4), ('Two', 5), ('One', 0), ('One', 1), ('One', 6)]

>>> {k: zip(*list(v))[1] for k,v in gb(sorted(l), get(0))}
{'Two': (4, 5), 'Nine': (9,), 'Three': (8,), 'One': (0, 1, 6)}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17686825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档