在字典的字典中查找相同键的不同值



我必须编写一个函数get_left_overlaps,它必须返回某个键的整数排序列表,即" Read "。

overlaps = {'Read1': {'Read3': 0, 'Read2': 1, 'Read5': 1, 'Read4': 0, 'Read6': 29}, 
'Read3': {'Read1': 0, 'Read2': 0, 'Read5': 0, 'Read4': 1, 'Read6': 1}, 
'Read2': {'Read1': 13, 'Read3': 1, 'Read5': 21, 'Read4': 0, 'Read6': 0}, 
'Read5': {'Read1': 39, 'Read3': 0, 'Read2': 1, 'Read4': 0, 'Read6': 14}, '
'Read4': {'Read1': 1, 'Read3': 1, 'Read2': 17, 'Read5': 2,'Read6': 0},
'Read6': {'Read1': 0, 'Read3': 43, 'Read2': 0, 'Read5': 0, 'Read4': 1}}

所需输出:

get_left_overlaps(overlaps, 'Read1')
[0,0,1,13,39]

我如何修改下面的代码以获得所需的输出?

keys = set()
def get_left_overlaps():
for key,val in overlaps[0].items():
for item in overlaps[1:]:
if overlaps[key] == val:
keys.add(key)

你的2个循环,需要在你拥有的2级字典上迭代,然后将内部键与给定值进行比较,并存储整数值,这是正确的

def get_left_overlaps(data, search_item):
keys = []
for key, values in data.items():
for val, nb in values.items():
if val == search_item:
keys.append(nb)
return sorted(keys)

overlaps = {'Read1': {'Read3': 0, 'Read2': 1, 'Read5': 1, 'Read4': 0, 'Read6': 29},
'Read3': {'Read1': 0, 'Read2': 0, 'Read5': 0, 'Read4': 1, 'Read6': 1},
'Read2': {'Read1': 13, 'Read3': 1, 'Read5': 21, 'Read4': 0, 'Read6': 0},
'Read5': {'Read1': 39, 'Read3': 0, 'Read2': 1, 'Read4': 0, 'Read6': 14},
'Read4': {'Read1': 1, 'Read3': 1, 'Read2': 17, 'Read5': 2, 'Read6': 0},
'Read6': {'Read1': 0, 'Read3': 43, 'Read2': 0, 'Read5': 0, 'Read4': 1}}
print(get_left_overlaps(overlaps, 'Read1'))  # [0, 0, 1, 13, 39]
print(get_left_overlaps(overlaps, 'Read2'))  # [0, 0, 1, 1, 17]
print(get_left_overlaps(overlaps, 'Read4'))  # [0, 0, 0, 1, 1]