我有一个大文件(大约有20万个输入)。输入格式如下:
A B C D
B E F
C A B D
D
我正在读取此文件并将其存储在列表中,如下所示:
text = f.read().split('\n')
这将在文件看到新行时拆分文件。因此,正文如下:
[[A B C D] [B E F] [C A B D] [D]]
我现在必须将这些值存储在字典中,其中键值是每个列表中的第一个元素。i、 e钥匙是A、B、C、D。 我发现很难将这些值作为列表的其余元素输入。i、 词典应该是这样的:
{A: [B C D]; B: [E F]; C: [A B D]; D: []}
我已经做了以下工作:
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。
接受的答案是正确的,只是它将整个文件读入内存(如果您有一个大文件,则可能不需要),并且它将覆盖重复的密钥。
使用defaultdict的另一种方法(可从Python 2.4获得)可以解决以下问题:
输入:
结果:
对词典的理解使这项任务完成得很短:
尝试使用切片:
对于只有键值在行上的情况,这将为您提供一个空列表,而不是0。要改为获取0,请使用
or
(它始终返回一个操作数):听写理解更容易:
注意:dict键必须是唯一的,所以如果有两行以“C”开头,那么第一行将被重写。
相关问题 更多 >
编程相关推荐