在python 3和python 2中,是否有一種方法可以在包含特定值的字典中獲取鍵值對?例如。這裏是字典:在包含python中特定值的字典中查找鍵值對
dict_a = {'key_1': [23, 'ab', 'cd'], 'key_2': [12, 'aa', 'hg']}
我該如何獲得鍵值對,其中'cd'的值存在?我試着用itervalues(),但似乎並沒有工作
在python 3和python 2中,是否有一種方法可以在包含特定值的字典中獲取鍵值對?例如。這裏是字典:在包含python中特定值的字典中查找鍵值對
dict_a = {'key_1': [23, 'ab', 'cd'], 'key_2': [12, 'aa', 'hg']}
我該如何獲得鍵值對,其中'cd'的值存在?我試着用itervalues(),但似乎並沒有工作
您可以使用一個簡單的字典解析,以檢查是否cd
是每個鍵,值對的值:
>>> dict_a = {'key_1': [23, 'ab', 'cd'], 'key_2': [12, 'aa', 'hg']}
>>> {k: v for k, v in dict_a.items() if 'cd' in v}
{'key_1': [23, 'ab', 'cd']}
這可以推廣通過提取邏輯成一個函數:
>>> def filter_dict(d, key):
return {k: v for k, v in d.items() if key in v}
>>> dict_a = {'key_1': [23, 'ab', 'cd'], 'key_2': [12, 'aa', 'hg']}
>>> filter_dict(dict_a, 'cd')
{'key_1': [23, 'ab', 'cd']}
>>>
遍歷在dict
dict_a = {'key_1': [23, 'ab', 'cd'], 'key_2': [12, 'aa', 'hg']}
for k, v in dict_a.iteritems():
if 'cd' in v:
print k, v
key_1 [23, 'ab', 'cd']
012中的所有項目
你可以簡單地遍歷你的字典項,並檢查你的價值是值,例如:
for k, v in dict_a.items(): # use iteritems() on Python 2.x
if "cd" in v:
print("key: {}, value: {}".format(k, v))
你可以寫你自己的小方法來檢查在字典中的值。
dict_a = {'key_1': [23, 'ab', 'cd'], 'key_2': [12, 'aa', 'hg']}
def checkValue(dictionary, value):
for key, valueList in dict_a.items():
if value in valueList:
print("value(" + value + ") present in " + str(valueList) + " with key (" + key + ")")
break
checkValue(dict_a, 'cd')
樣品試驗
value(cd) present in [23, 'ab', 'cd'] with key (key_1)
感謝@Christian,我得到這個錯誤:'*** AttributeError的: '快譯通' 對象有沒有屬性「iteritems'' – user308827
@ user308827啊,比你使用Python 3.您需要使用'.items()'來代替。我會更新。再檢查一遍。現在它應該工作。你把我扔了,因爲你在問題中提到了'itervalues()',所以我認爲你使用的是Python 2。 –