【问题标题】:Find different values of the same key in a dictionary of dictionaries在字典字典中查找同一键的不同值
【发布时间】:2021-12-11 04:31:42
【问题描述】:

我必须编写一个函数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)
    

【问题讨论】:

  • 为什么 0 在输出中出现两次?
  • 为获得最佳效果,请展示解决问题的尝试,分享您尝试过的方法以及不适合的原因。
  • 您使用参数调用该方法。该方法不接受任何

标签: python dictionary for-loop


【解决方案1】:

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

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]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多