25

キーと値のペアを持つ辞書があります。私の値には文字列が含まれています。特定の文字列が辞書に存在するかどうかを検索し、値を含むキーに対応するキーを返すにはどうすればよいですか。

文字列「Mary」が辞書の値に存在するかどうかを検索し、それを含むキーを取得したいとしましょう。これは私が試したものですが、明らかにそのようには機能しません。

#Just an example how the dictionary may look like
myDict = {'age': ['12'], 'address': ['34 Main Street, 212 First Avenue'],
          'firstName': ['Alan', 'Mary-Ann'], 'lastName': ['Stone', 'Lee']}

#Checking if string 'Mary' exists in dictionary value
print 'Mary' in myDict.values()

保存されている値の部分文字列を探したい場合があるため、これを行うより良い方法はありますか (「Mary」は値「Mary-Ann」の部分文字列です)。

4

11 に答える 11

37

次のように実行できます。

#Just an example how the dictionary may look like
myDict = {'age': ['12'], 'address': ['34 Main Street, 212 First Avenue'],
      'firstName': ['Alan', 'Mary-Ann'], 'lastName': ['Stone', 'Lee']}

def search(values, searchFor):
    for k in values:
        for v in values[k]:
            if searchFor in v:
                return k
    return None

#Checking if string 'Mary' exists in dictionary value
print search(myDict, 'Mary') #prints firstName
于 2013-06-27T10:44:31.933 に答える
4
import re
for i in range(len(myDict.values())):
     for j in range(len(myDict.values()[i])):
             match=re.search(r'Mary', myDict.values()[i][j])
             if match:
                     print match.group() #Mary
                     print myDict.keys()[i] #firstName
                     print myDict.values()[i][j] #Mary-Ann
于 2013-06-27T11:07:10.607 に答える
2
>>> myDict
{'lastName': ['Stone', 'Lee'], 'age': ['12'], 'firstName': ['Alan', 'Mary-Ann'],
 'address': ['34 Main Street, 212 First Avenue']}

>>> Set = set()

>>> not ['' for Key, Values in myDict.items() for Value in Values if 'Mary' in Value and Set.add(Key)] and list(Set)
['firstName']
于 2013-06-27T10:51:37.447 に答える
2

私にとって、これもうまくいきました:

def search(myDict, search1):
    search.a=[]
    for key, value in myDict.items():
        if search1 in value:
            search.a.append(key)

search(myDict, 'anyName')
print(search.a)
  • search.a は、リストをグローバルに利用できるようにします
  • 部分文字列の一致がいずれかの値で見つかった場合、その値のキーが
于 2017-11-01T11:05:02.643 に答える
0
def search(myDict, lookup):
    a=[]
    for key, value in myDict.items():
        for v in value:
            if lookup in v:
                 a.append(key)
    a=list(set(a))
    return a

研究にさらに多くのキーが含まれる場合は、すべてのキーを含むリストを作成する必要があります

于 2015-03-09T17:49:19.203 に答える
-3

import json 'mtach' in json.dumps(myDict) が見つかった場合は true

于 2019-01-09T21:21:20.330 に答える