我有一本名爲data_dict
的詞典字典。下面是它的外觀:在python詞典中搜索字典
{'UMANOFF ADAM S': {'total_stock_value': 'NaN', 'loans': 'NaN', 'salary': 288589},
'YEAP SOON': {'total_stock_value': 192758, 'loans': 'NaN', 'salary': 'NaN'},
'PIPER GREGORY F': {'total_stock_value': 880290, 'loans': 1452356, 'salary': 19791},
'Jack S': {'total_stock_value': 88000, 'loans': 'NaN', 'salary': 288589}
}
基本上它是
{Person Name : Dictionary of that person's attributes}
我想找到一個人的工資是一定X. 具體來說,在上述例子中的名稱格式 - 讓我們說我試圖找到工資爲288589的人的姓名。我期望所有工資爲288589的人的姓名。
我已經寫了以下廣義函數,它將採用搜索關鍵字和值並返回人員姓名哪一個在關鍵時刻,價值觀是真實的。
def search_person_by_attribute(attribute, value):
person_names = []
for person, attributes_dict in data_dict.items():
if attributes_dict[attribute] == value:
person_names.append(person)
return person_names
這種方法成功運行
results = search_person_by_attribute("salary", 288589)
print(results)
,並打印
['UMANOFF ADAM S','Jack S']
但不知何故,我覺得這是一個相當長的路寫。是否有更好/更短/更pythonic的方式來做到這一點?
如果您還可以提及我的效率(就時間複雜度而言),那麼您建議的解決方案將是一項巨大的獎勵。
你可以創建一個專門的字典爲您的需要,使用當前詞典作爲輸入。 –
如果你這麼做了,爲什麼不用'{salary:(name1,name2)}'格式創建一個新的字典呢? –
@ Jean-FrançoisFabre&Chris_Rands不是真的。我在這個問題上用薪水作爲例子。數據集非常龐大,我需要搜索各種屬性,而不僅僅是薪水。在這裏創建一個新的字典不是一個好主意。 :-) –