Accessing Python dict values with the key start characters
You can't do such directly with dict[keyword]
, you've to iterate through the dict and match each key against the keyword and return the corresponding value if the keyword is found.
This is going to be an O(N)
operation.
>>> my_dict = {'name': 'Klauss', 'age': 26, 'Date of birth': '15th july'}
>>> next(v for k,v in my_dict.items() if 'Date' in k)
'15th july'
To get all such values use a list comprehension:
>>> [ v for k,v in my_dict.items() if 'Date' in k]
['15th july']
use str.startswith
if you want only those values whose keys starts with 'Date':
>>> next( v for k,v in my_dict.items() if k.startswith('Date'))
'15th july'
>>> [ v for k,v in my_dict.items() if k.startswith('Date')]
['15th july']
not the best solution, can be improved (overide getitem)
class mydict(dict):
def __getitem__(self, value):
keys = [k for k in self.keys() if value in k]
key = keys[0] if keys else None
return self.get(key)
my_dict = mydict({'name': 'Klauss', 'age': 26, 'Date of birth': '15th july'})
print(my_dict['Date'])# returns 15th july