向python词典添加多个值

时间:2015-08-24 17:27:52

标签: python dictionary

我正在创建如下所示的字典,然后使用给定的键添加值。但我正在处理测序数据,有些数据需要多次输入,而其他数据只能输入一次。所以目前我正在这样做:

my_dict = defaultdict(list)
my_dict[seq].append(read_seq)

然后字典看起来像这样:

{'TTTT': ['AGTG', 'AGGG'], 'AAAA': ['AGAG', 'TGTG']})

我的问题是我想将两个单独的字符串与每个键相关联,但只在添加新键时添加它们,然后再也不添加。这些应该与上面显示的值不同:

所以我想象这样的事情,谢谢:

{'TTTT': ['AGTG', 'AGGG'], ['string1'], ['string2'], 'AAAA': ['AGAG', 'TGTG'], ['string3'], ['string4']})

1 个答案:

答案 0 :(得分:2)

如何将元组或词典作为主要词典的价值呢? 所以不是这个(在python中不存在):

{'TTTT': ['AGTG', 'AGGG'], ['string1'], ['string2'], 'AAAA': ['AGAG', 'TGTG'], ['string3'], ['string4']})

你会得到:

{'TTTT': (['AGTG', 'AGGG'], ['string1'], ['string2']), 'AAAA': (['AGAG', 'TGTG'], ['string3'], ['string4'])}

这基本上意味着每个键有3个元素的元组,第一个是你的列表,第二个和第三个是你的字符串。
要实现它,请以这种方式定义defaultdict:

my_dict = defaultdict(lambda:([], [], []))

然后使用my_dict[0]作为原始字符串列表,my_dict[1]my_dict[2]作为字符串。

将键/值附加到此dict的示例:

my_dict[seq][0].append(read_seq)
#And now your two strings:
my_dict[seq][1] = 'string1'
my_dict[seq][1] = 'string2'

如果你不想把你的字符串放在一个列表中(你可能不应该这样做),你可以改用dict。然后看起来像:

{'TTTT': {'sequences':['AGTG', 'AGGG'], 'additional':('string1', 'string2')}, 'AAAA': {'sequences':['AGAG', 'TGTG'], 'additional':('string3', 'string4')}}

这将使键/值的添加更加清晰:

my_dict = defaultdict(dict)
#...
my_dict[seq]['sequences'] = read_seq
#And now your two strings:
my_dict[seq]['additional'] = ('string1','string2')

我个人更喜欢第二种选择。