私はdata_dict
と呼ばれる辞書の辞書があります。以下は、それがどのように見えるかです:それは私が給料である特定のX. 具体的に、上記の例では人物の名前を見つけようとしています辞書のpython辞書で検索する
{Person Name : Dictionary of that person's attributes}
形式のものであり、基本的に
{'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}
}
- さんが言って聞かせて私は給与が288589人の名前を見つけることを試みている。私は給与が288589であるすべての名前を期待する。
私は検索キーと値をとり、どのthキーで、値は真です。
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本当にありません。私は質問で給料を例に挙げました。データセットは膨大で、給与だけでなく様々な属性を検索する必要があります。新しい辞書を作成するのは良い考えではありません。 :-) –