我想知道是否可以循环一个值列表
例如:
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']
}
要检查列表中的单个值是否具有字典中的值,如果它具有该值,则它将返回该值所在的键。
示例:
lst值CD241在字典'6005': ['RH50A, CD241, SLC42A1']
中,它会返回键"6005"
。
答案 0 :(得分:1)
类似的东西,
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
中的内容一样好。
答案 1 :(得分:0)
试试这个:
for key in ref_dict:
if ref_dict[key] != 0:
return key
#if you want to use the value
答案 2 :(得分:0)
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']