繁体   English   中英

将项目添加到列表字典

[英]add items to dictionary of list

我有这样一行的文件,其中每一行都有一个索引(a,b),然后是与之关联的数字列表

a\t12|123|08340|4985
b\t3856|12|276

我想要的是获得此输出

12    a
123   a
8340  a
4985  a
3856  b
276   b

请注意,我只想输出一组独特的基因,如果在行中有多个相同数字的情况下,则具有首次出现的值。

我是这样处理的:尝试将数字添加到以字母为键,数字作为值的字典中。 最后,仅输出数字的set()以及相应的字母。

uniqueval = set()
d = defaultdict(list)

for line in file:
   fields = line.strip().split(\t)
   Idx = fields[0]
   Values = fields[1].split("|")
   for Val in Values:
       uniqueval.add(Val)
       d[Idx] += Val
       for u in uniqueval:
           print u,"\t", [key for key in d.keys() if u in d.values()]

脚本运行,但是当我查看字典时,Val都按字符分割,如下所示:

 {'a': ['1','2','1'....], 'b': ['3', '8',....]}

我不明白为什么值会被分割,因为它处于for循环中,我认为它将把每个Val作为新值添加到字典中。 您能帮我理解这个问题吗?

谢谢。

您正在使用Val 扩展列表:

d[Idx] += Val

这会将Val中的每个字符添加为单独的元素。

使用append()代替:

d[Idx].append(Val)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM