我有一个很大的字典词典,里面有很多这样的元素:
'470046757': {'Cmstrk': 'cms_trk_dcs_04:CAEN', 'Crate': 'easyCrate4', 'Board': 'easyBoard10', 'Branch': 'branchController04', 'TrackerSY': 'CMS_TRACKER_SY1527_9', 'Channel': 'channel002\n'}
,下一个元素是
'3646457': {'Cmstrk':'cms_trk_dcs_13:CAEN',...,'Channel':'channel005\n'}
等等。
key1
是'2383495'
和key2
(或第一个字典的值)Cmstrk
,Crate
,...,Channel
,等等,各个值key1
可能相同(所有key1
之间的值不同)
我的意思是,我怎么知道两个或更多个值可能具有的key1
共同点
如果我输入branchController04,CMS_TRACKER_SY1527_9
,我需要拥有该属性的所有key1
。
我已经为key1
的某个值返回key2
的脚本(我输入channel002\n
并返回'54654556'
)但我不知道密钥共同的。
答案 0 :(得分:0)
如果我理解正确,您不知道您正在寻找key2
。
keyword = 'branchController04'
matchingKey2 = None
foundKey1s = []
for k1 in myDict:
if not matchingKey2 :
for k2 in myDict[k1]:
if myDict[k1][k2]==keyword:
matchingKey2 = k2
foundKey1s.append(k1)
else:
if myDict[k1][matchingKey2]==keyword:
foundKey1s.append(k1)
编辑:重新阅读您的问题后,我了解它可能是key2
。如果是这样的话:
keyword = 'branchController04'
foundKey1s = {k1 for k2 in myDict[k1] for k1 in myDict if myDict[k1][k2]==keyword}
如果多个k2
值与一个子字典中的keyword
匹配,我会使用一个集
答案 1 :(得分:0)
def db_position(db, search_name):
# Iterating over main dict
for main_key, main_value in zip(db.keys(), db.values()):
# over secondary dict(s)
for secn_key, secn_value in zip(main_value.keys(), main_value.values()):
if secn_value == search_name:
print("Main: ", main_key)
print("Secn: ", secn_key)
database = dict()
database.update({'470046757': {'Cmstrk': 'cms_trk_dcs_04:CAEN',
'Crate': 'easyCrate4',
'Board': 'easyBoard10',
'Branch': 'branchController04',
'TrackerSY': 'CMS_TRACKER_SY1527_9',
'Channel': 'channel002\n'}})
database.update({'3646457': {'Cmstrk': 'cms_trk_dcs_13:CAEN',
'Channel': 'channel005\n'}})
db_position(database, 'easyCrate4')
运行:
>python dicts.py
('Main: ', '470046757')
('Secn: ', 'Crate')