Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Python中创建包含列表列表的字典

在Python中创建包含列表列表的字典
EN

Stack Overflow用户
提问于 2012-03-25 05:20:53
回答 2查看 55.4K关注 0票数 19

我有一个很大的文件(大约200k的输入)。输入的形式如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
A B C D
B E F
C A B D
D  

我正在读取这个文件并将其存储在一个列表中,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
text = f.read().split('\n')

每当它看到一个新行时,它就会拆分文件。因此,文本如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[[A B C D] [B E F] [C A B D] [D]]

我现在必须将这些值存储在字典中,其中键值是每个列表中的第一个元素。也就是说,关键字将是A,B,C,D。我发现很难输入这些值作为列表中剩余的元素。也就是说,字典应该是这样的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{A: [B C D]; B: [E F]; C: [A B D]; D: []}

我做了以下工作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    inlinkDict = {}
    for doc in text:
    adoc= doc.split(' ')
    docid = adoc[0]
    inlinkDict[docid] = inlinkDict.get(docid,0) +  {I do not understand what to put in here}

请帮助我如何将值添加到我的字典中。如果列表中除了将作为键值的元素之外没有其他元素,则该值应为0。如示例0所示。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-25 05:27:00

尝试使用切片:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
inlinkDict[docid] = adoc[1:]

这将为您提供一个空列表,而不是在只有键值在行上的情况下的0。要获得0,请使用or (它始终返回一个操作数):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
inlinkDict[docid] = adoc[1:] or 0

使用字典理解的更简单方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> with open('/tmp/spam.txt') as f:
...     data = [line.split() for line in f]
... 
>>> {d[0]: d[1:] for d in data}
{'A': ['B', 'C', 'D'], 'C': ['A', 'B', 'D'], 'B': ['E', 'F'], 'D': []}
>>> {d[0]: ' '.join(d[1:]) if d[1:] else 0 for d in data}
{'A': 'B C D', 'C': 'A B D', 'B': 'E F', 'D': 0}

注意: dict键必须是唯一的,所以如果你有两行以“C”开头的代码,那么第一行将被覆盖。

票数 22
EN

Stack Overflow用户

发布于 2012-03-25 05:43:59

字典理解使这项任务变得简短:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> s = [['A','B','C','D'], ['B','E','F'], ['C','A','B','D'], ['D']]
>>> {t[0]:t[1:] for t in s}
{'A': ['B', 'C', 'D'], 'C': ['A', 'B', 'D'], 'B': ['E', 'F'], 'D': []}
票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9858096

复制
相关文章

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文