【发布时间】:2018-04-30 20:53:43
【问题描述】:
我有两个类型的字典:
dict1 = {NTID: (ID, CN)}
dict2 = {NTID: INCHI}
我想得到:
dict3 = {NTID: (ID, CN, INCHI)}
我试过用zip,如下:
dict_3 = dict(zip(dict1, dict2))
但我得到 NTID 作为键和值。请注意,每个字典都有多个值,但dict1和dict2之间的值顺序是一致的
编辑:
dict1 中的一个例子是(键:'1-4-HYDROXYPHENYL', '4-AMINO-BUTYRATE', 'ACETYLCHOLINE', 'ASN')
{'1-4-HYDROXYPHENYL': [],
'4-AMINO-BUTYRATE': [('24', 'gamma-aminobutyrate (GABA)'),
('172', 'alpha-ketoglutarate'),
('173', 'succinate'),
('399', 'Succinate semialdehyde'),
('111', 'putrescine'),
('114', '4-guanidinobutanoate'),
('115', '4-acetamidobutanoate')],
'ACETYLCHOLINE': [],
'ASN': [('1', 'glycine'),
('45', 'tyrosine'),
('74', 'leucine'),
('90', 'methionine'),
('80', 'valine')]}
dict2:
{'1-4-HYDROXYPHENYL': [],
'4-AMINO-BUTYRATE': ['InChI=1S/C4H9NO2/c5-3-1-2-4(6)7/h1-3,5H2,(H,6,7)',
'InChI=1S/C5H6O5/c6-3(5(9)10)1-2-4(7)8/h1-2H2,(H,7,8)(H,9,10)/p-2',
'InChI=1S/C4H6O4/c5-3(6)1-2-4(7)8/h1-2H2,(H,5,6)(H,7,8)/p-2',
'InChI=1S/C4H6O3/c5-3-1-2-4(6)7/h3H,1-2H2,(H,6,7)/p-1',
'InChI=1S/C4H12N2/c5-3-1-2-4-6/h1-6H2/p+2',
'InChI=1S/C5H11N3O2/c6-5(7)8-3-1-2-4(9)10/h1-3H2,(H,9,10)(H4,6,7,8)',
'InChI=1S/C6H11NO3/c1-5(8)7-4-2-3-6(9)10/h2-4H2,1H3,(H,7,8)(H,9,10)/p-1'],
'ACETYLCHOLINE': [],
'ASN': ['InChI=1S/C9H11NO3',
'InChI=1S/C9H11NO2/c10-8',
'InChI=1S/C3H7NO2/c1-2(4)3(5)6',
'InChI=1S/C5H9NO2/c7-5(8)4-2-1-3',
'InChI=1S/C4H9NO3/c1-2(6)3',
'InChI=1S/C4H8N2O3/c5-2(4(8)',
'InChI=1S/C6H13NO2/c1-3-4(2)',
'InChI=1S/C6H9N3O2/c7-5(6(10)',
'InChI=1S/C4H7NO4/c5-2(4(8)9)',
'InChI=1S/C4H4O5/c5-2(4(8)9)1-',
'InChI=1S/C3H7NO2S/c4-2(1-7)3(5)',
'InChI=1S/C5H10N2O3/c6-3(5(9)'}
dict3(输出)应该是这样的:
{'1-4-HYDROXYPHENYL': [],
'4-AMINO-BUTYRATE': [('24', 'gamma-aminobutyrate (GABA)', 'InChI=1S/C4H9NO2/c5-3-1-2-4(6)7/h1-3,5H2,(H,6,7)'),
('172', 'alpha-ketoglutarate', 'InChI=1S/C5H6O5/c6-3(5(9)10)1-2-4(7)8/h1-2H2,(H,7,8)(H,9,10)/p-2', 'InChI=1S/C4H6O4/c5-3(6)1-2-4(7)8/h1-2H2,(H,5,6)(H,7,8)/p-2'),
('173', 'succinate', 'InChI=1S/C4H6O3/c5-3-1-2-4(6)7/h3H,1-2H2,(H,6,7)/p-1'),
etc...
【问题讨论】:
-
dict1['NTID'] += (dict2['NTID'],)? -
我应该把它放在一个for循环中,循环遍历每个键吗?
-
我看过那个帖子,但我的帖子不是真的一样,因为我的一个字典的值是一个元组,我希望我的输出字典有三个元素的元组作为值
-
One of the answers 应该让您了解如何处理此问题。我不确定是否有更好的方法,但缺乏更好的答案似乎表明遍历这两个字典是最好的方法。参考链接的答案,对于您的具体情况,因为
dict1存储元组,而不是.append(value),当值是元组时,您可以使用.extend(value)。
标签: python dictionary zip