[英]Retrieve the main key by using part of the sub value in a dictionary in python
我有一個包含子鍵和子值的字典。 我想打印包含子鍵中某個值的主鍵的列表。 我希望這個例子能說清楚:
cssStyleDict= {'.c13':{'color':'#000',
'font-family':'"Arial"',
'font-weight':'700',
'vertical-align':'baseline'},
'.c6':{'font-weight':'700'},
'.c7':{'color':'#000',
'font-size':'11pt',
'font-weight':'700',
'text-decoration':'none'},
'.c2':{'background-color':'#ff0'}}
我想打印包含{'font-weight':'700'}
的所有鍵的列表。 我試過這個:
def getKeysByValue(dictOfElements, valueToFind):
listOfKeys = list()
listOfItems = dictOfElements.items()
for item in listOfItems:
if item[1] == valueToFind:
listOfKeys.append(item[0])
return listOfKeys
listOfKeys = getKeysByValue(cssStyleDict, {'font-weight':'700'} )
for key in listOfKeys:
print(key)
但當然這只能給我一個精確的匹配。 我也試過使用正則表達式,但無濟於事。 輸出應該是一個包含.c13
.c6
.c7
的列表
如果有人可以提供幫助,請提前致謝。
你可以試試這個方法:
>>> [ i for i in cssStyleDict if cssStyleDict[i].get('font-weight') == '700' ]
['.c13', '.c6', '.c7']
要使用您發布的代碼作為答案的基礎,您只需更改 if 語句的條件。 目前,您正在檢查完美匹配,因為您使用了“==”
然而,Python 附帶了一個很棒的運算符,它可以完全滿足您的需求:“in”。
因此,您的新情況應該是:
If valueToFind in item[1]:
希望這是有道理的!
使用字典內置的清潔和清晰的方法。
cssStyleDict= {'.c13':{'color':'#000',
'font-family':'"Arial"',
'font-weight':'700',
'vertical-align':'baseline'},
'.c6':{'font-weight':'700'},
'.c7':{'color':'#000',
'font-size':'11pt',
'font-weight':'700',
'text-decoration':'none'},
'.c2':{'background-color':'#ff0'}}
for key, val in cssStyleDict.items():
if(cssStyleDict[key].__contains__('font-weight')):
if(cssStyleDict[key]['font-weight'] == '700'):
print(key)
我會首先檢查該鍵的每個字典,然后將值與預期的值進行比較。
def getKeysByValue(dictOfElements, valueToFind):
listOfKeys = list()
listOfItems = dictOfElements.items()
for k,v in listOfItems:
try:
if v[valueToFind[0]] == valueToFind[1]:
listOfKeys.append(k)
except KeyError:
pass
return listOfKeys
listOfKeys = getKeysByValue(cssStyleDict, ('font-weight', '700') )
for key in listOfKeys:
print(key)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.