2016-04-01 3 views
0

У меня есть список словарей в Python следующим образом:Обновление счетчика в списке питона словарей

comment_obj= 
[{'food_id': '-KCRZfJMGvYkofzskfRv', 
    'food_name': 'Lazeez Special Cheese Kabab', 
    'text': 'Lazeez Special Cheese Kebab were completely drool worthy', 
    'time_stamp': '', 
    'user_id': '-KBIcIgaIOYh2G8hLrYj', 
    'user_name': 'Arjun Nambiar'}, 
{'food_id': '-KCRZfJMGvYkofzskfRv', 
    'food_name': 'Lazeez Special Cheese Kabab', 
    'text': 'This is heart attack on a plate.So yummy and gooey', 
    'time_stamp': '', 
    'user_id': '-KBIcIgfu1V735jviWrk', 
    'user_name': 'Samir Madhavan'}, 
{'food_id': '-KCRZfJMGvYkofzskfRv', 
    'food_name': 'Lazeez Special Cheese Kabab', 
    'text': 'The molten cheese on this chicken was just awesome', 
    'time_stamp': '', 
    'user_id': '-KBIcIggKo4I7Bkn-N48', 
    'user_name': 'Febin Sathar'}, 
{'food_id': '-KCRZfJRMgLjlqzKZzCI', 
    'food_name': 'Chicken Reshmi Kebab', 
    'text': 'Covered in a velvet coating of egg,this was so yumm', 
    'time_stamp': '', 
    'user_id': '-KBIcIgaIOYh2G8hLrYj', 
    'user_name': 'Arjun Nambiar'}] 

Как видно, значение time_stamp является empty.I необходимо обновить значение time_stamp в каждом Dict так что time_stamp в следующем dict больше, чем предыдущий dict. Это, как я пытался сделать это:

epoch_time = 1459408412 
for d in comment_obj: 
d.update((k, epoch_time+1) for k, v in d.iteritems() if k == "time_stamp") 

Но это обновляет time_stamp везде, как 1459408413, а счетчик не increase.What я делаю неправильно?

ответ

1
epoch_time = 1459408412 
for d in Obj_comment: 
    epoch_time += 1 
    d.update((k, epoch_time) for k, v in d.iteritems() if k == "time_stamp") 
+0

В качестве альтернативы можно использовать сокращенную версию этого 'epoch_time + = 1' –

+0

Спасибо, @ CHRIS-sprance. Обновляется на основе ваших отзывов – foundart

+0

baaah..i чувствую себя так глупо сейчас ... – Amistad

1

На самом деле вы не должны перебирает ключи в словаре или использовать метод update() просто обновить один ключ. Просто используйте поиск dict.

>>> epoch_time = 1459408412 
>>> for element in comment_obj: 
...  epoch_time = epoch_time + 1 
...  element['time_stamp'] = epoch_time 
... 
>>> [element['time_stamp'] for element in comment_obj] # Just to confirm all elements are updated. 
[1459408413, 1459408414, 1459408415, 1459408416] 
Смежные вопросы