Чтобы уточнить, у вас есть несколько словарей, но вы хотите уникальные данные ['ключ']?Например, если data1 ['key'] = 'hello', вы хотите убедиться, что data2 ['key'] = 'hello' не разрешено?Вы хотите просто вызвать ошибку?Это способ проверить, что это хорошо.(Также не рекомендуется называть ваш список «список», так как список является типом данных в Python)
datalist = [datadict1, datadict2, datadict3]
big_key_list = []
for datadict in datalist:
curkey = datadict.get('key')
if curkey not in big_key_list:
big_key_list.append(curkey)
else:
raise Exception("Key %s in two data dicts" % curkey)
Теперь лучшим способом сделать это будет создание нового класса, наследуемого от dict, который содержит поддиктарии,но не позволяет нескольким ключам иметь одинаковое значение.Таким образом, ошибки возникают при назначении, а не вы можете просто проверить, все ли в порядке (и не знаете, что делать, если что-то не так, кроме как выдавать ошибку).что вы, вероятно, хотите сделать, у вас неправильно настроены данные.Я говорю это так, как будто вы хотите иметь отдельный словарь для каждой записи.Это почти наверняка не элегантный способ сделать это.
Сначала создайте класс:
class MyDataObject(object):
def __init__(self, **kwargs):
for k,v in kwargs:
self.__dict__[k] = v
или, если они всегда будут иметь все 4 фиксированных параметра:
class MyDataObject(object):
def __init__(self, timestamp, action, obj_type, obj_id):
self.timestamp = timestamp
self.action = action
self.type = obj_type
self.id = obj_id
Затем просто определите свои типы данных.
data = {}
data['key1'] = MyDataObject(timestamp='some timestamp', action='some action', type='some type', id = 1234)
data['key2'] = MyDataObject(timestamp='some timestamp2', action='some action2', type='some type2', id = 1235)
Вы бы получили доступ к своим данным, как:
data['key1'].timestamp # returns 'some timestamp'
data['key2'].action # returns 'some action2'
, или вы можете даже получить доступ, используя dict () (например, это полезно, если у вас есть переменная x = 'action ', и вы хотите получить к нему доступ.)
data['key1'].__dict__('action') # returns 'some action'
data['key2'].__dict__('timestamp') # returns 'some timestamp2'
Теперь у вас есть просто словарь объектов, в котором ключ уникален, а данные, связанные с ним, хранятся как один объект (типа MyDataObject)..