如何使用循环填充字典

时间:2018-07-18 14:28:38

标签: python dictionary hashtable

我有两个名为res_listfina_list的列表。我希望将res_list的第一个成员作为键并将fina_list的第一个成员作为值,依此类推。两个列表的长度相同。我已经编写了以下代码,但没有得到答案,请对此提供帮助。

for i in range(0, len(prot_temp)):
    dict_dist[res_list_count[i]] = fina_val[i]
print (dict_dist)

res_list = ['LYS','LYS','LYS','LYS','ARG','LYS','LYS','LYS','ARG','LYS','LYS', 'ARG','LYS','ARG','LYS','LYS','ARG','LYS','ARG','ARG','ARG','LYS','LYS','LYS ','LYS','LYS']和fina_val = [['90',30.390685694798005],['91',33.017900690383094],['99',25.200985952934463],['104',19.14776281971343],['113' ,20.365273138359818],['114',21.71637709195528],['135',29.452559922696025],['138',24.335606731700775]]但是当我按照您说的那样做时,我会得到满足的答案:{'LYS':['302 ',25.757180610462783],'ARG':['282',17.118237438474793]}我错了吗?

2 个答案:

答案 0 :(得分:3)

您可以使用zipdictionary comprehension

d = {k:v for k,v in zip(res_list, fina_list)}

而且,正如Peter所指出的,一个人可以做dict(zip(res_list, fina_list)


一些更明确的方法(也许使用更少的Python(ic)方法)

您可以遍历zip使其更加明确。

d = {}
for k,v in zip(res_list, fina_list):
    d[k] = v

其中甚至可以遍历列表和索引。

d = {}
for i in range(min(len(res_list), len(fina_list)):
    d[res_list[i]] = fina_list[i]

如果您更清楚这些。但是,python的部分优点是它的简洁性,同时又保持了 clarity

答案 1 :(得分:2)

dict的构造函数接受(key, value)对的序列, 所以您可以使用

dict(zip(res_list, fina_list))