繁体   English   中英

通过字典值循环列表python

[英]Looping a list through dictionary values python

我想知道是否可以循环一个值列表
例:

lst = ['RH', 'CD241', 'C2', 'SCZD9', 'RG59L', 'WNT3A']

通过字典的值
例:

ref_dict = {
    '': [''], '6005': ['RH50A', 'CD241', 'SLC42A1'], '603': [''],
    '6000': [''], '8787': ['PERRS', 'RGS9L', 'MGC26458'],
    '41': ['ACCN2', 'BNaC2', 'hBNaC2'], '8490': [''],
    '9628': [''], '5999': ['SCZD9']
}

要检查列表中的单个值是否在字典中具有该值,如果它确实具有该值,那么它将向我返回该值所在的键。

示例:第一个值CD241在字典'6005': ['RH50A, CD241, SLC42A1'] ,它将为我返回键"6005"

就像是,

for key in ref_dict.keys():
    if set(lst) & set(ref_dict[key]):
        #do something with your key
        #key is the key you want

如果有多个键,其中lst中的元素之一将存在,那么您可以通过列表理解获得这些键的列表,

[key for key in ref_dict.keys() if set(lst) & set(ref_dict[key])]

根据您的情况输出['6005', '5999']

魔术发生在设定的相交部分,

(set(['RH', 'CD241', 'C2', 'SCZD9', 'RG59L', 'WNT3A']) & 
 set(['RH50A', 'CD241', 'SLC42A1']))

会给你- ['CD241']不如检查,如果东西lst值列表或不存在。

尝试这个:

for key in ref_dict:
    if ref_dict[key] != 0:
        return key
        #if you want to use the value 

这可能会链接帮助

from collections import defaultdict

lst = ['RH', 'CD241', 'C2', 'SCZD9', 'RG59L', 'WNT3A']
ref_dict = {
    '': [''], '6005': ['RH50A, CD241, SLC42A1'], '603': [''],
    '6000': [''], '8787': ['PERRS, RGS9L, MGC26458'],
    '41': ['ACCN2, BNaC2, hBNaC2'], '8490': [''],
    '9628': [''], '5999': ['SCZD9']
}


all_values = defaultdict(list)
for key in ref_dict:
    for value in (map(lambda x: x.strip(), ref_dict[key][0].split(","))):
        all_values[value].append(key)

print all_values['CD241'] # ['6005']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM