diff --git a/addons/gamification/models/badge.py b/addons/gamification/models/badge.py
index 4eb58b86a9f15172167ea781f98596002d9d0586..1f21c03194a3d9847005e0d91c7366cb420e791f 100644
--- a/addons/gamification/models/badge.py
+++ b/addons/gamification/models/badge.py
@@ -95,7 +95,7 @@ class gamification_badge(osv.Model):
             the total number of time this badge was granted
             the total number of users this badge was granted to
         """
-        result = dict.fromkeys(ids, {'stat_count':0, 'stat_count_distinct':0, 'unique_owner_ids':[]})
+        result = dict((res_id, {'stat_count': 0, 'stat_count_distinct': 0, 'unique_owner_ids': []}) for res_id in ids)
 
         cr.execute("""
             SELECT badge_id, count(user_id) as stat_count,
diff --git a/addons/hr_holidays/hr_holidays.py b/addons/hr_holidays/hr_holidays.py
index f299639265e11cbdf99648db740cfb13f07ca861..9ac9d0e193e014a92658971d8f1a1edb4732ed19 100644
--- a/addons/hr_holidays/hr_holidays.py
+++ b/addons/hr_holidays/hr_holidays.py
@@ -68,7 +68,7 @@ class hr_holidays_status(osv.osv):
         if employee_id:
             res = self.get_days(cr, uid, ids, employee_id, context=context)
         else:
-            res = dict.fromkeys(ids, {'leaves_taken': 0, 'remaining_leaves': 0, 'max_leaves': 0})
+            res = dict((res_id, {'leaves_taken': 0, 'remaining_leaves': 0, 'max_leaves': 0}) for res_id in ids)
         return res
 
     _columns = {
diff --git a/addons/hr_recruitment/hr_recruitment.py b/addons/hr_recruitment/hr_recruitment.py
index 3a4088b677cae087e9a623a5cb70cf7125f2851e..38777eb790778790628d76a03bece7a8a973f285 100644
--- a/addons/hr_recruitment/hr_recruitment.py
+++ b/addons/hr_recruitment/hr_recruitment.py
@@ -153,7 +153,7 @@ class hr_applicant(osv.Model):
         return result, fold
 
     def _compute_day(self, cr, uid, ids, fields, args, context=None):
-        res = dict.fromkeys(ids, dict())
+        res = dict((res_id, {}) for res_id in ids)
         for issue in self.browse(cr, uid, ids, context=context):
             values = {
                 'day_open': 0.0,
diff --git a/addons/mail/mail_message.py b/addons/mail/mail_message.py
index 439b2bed876bde07df73794c6785bb13eac31a61..455dae7dac74469bda152c0a491712479c1d7c2f 100644
--- a/addons/mail/mail_message.py
+++ b/addons/mail/mail_message.py
@@ -698,7 +698,7 @@ class mail_message(osv.Model):
         partner_id = self.pool['res.users'].browse(cr, SUPERUSER_ID, uid, context=None).partner_id.id
 
         # Read mail_message.ids to have their values
-        message_values = dict.fromkeys(ids, {})
+        message_values = dict((res_id, {}) for res_id in ids)
         cr.execute('SELECT DISTINCT id, model, res_id, author_id, parent_id FROM "%s" WHERE id = ANY (%%s)' % self._table, (ids,))
         for id, rmod, rid, author_id, parent_id in cr.fetchall():
             message_values[id] = {'model': rmod, 'res_id': rid, 'author_id': author_id, 'parent_id': parent_id}
diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py
index cef0ac10e6b558d9b4ddebe4663d4508d676a394..bc5988cf735fd591ae36e11a24e29e8fd74faaba 100644
--- a/addons/mail/mail_thread.py
+++ b/addons/mail/mail_thread.py
@@ -1388,7 +1388,7 @@ class mail_thread(osv.AbstractModel):
     def message_get_suggested_recipients(self, cr, uid, ids, context=None):
         """ Returns suggested recipients for ids. Those are a list of
             tuple (partner_id, partner_name, reason), to be managed by Chatter. """
-        result = dict.fromkeys(ids, list())
+        result = dict((res_id, []) for res_id in ids)
         if self._all_columns.get('user_id'):
             for obj in self.browse(cr, SUPERUSER_ID, ids, context=context):  # SUPERUSER because of a read on res.users that would crash otherwise
                 if not obj.user_id or not obj.user_id.partner_id:
diff --git a/addons/mail/res_users.py b/addons/mail/res_users.py
index a4feaab2ddecc0c350a1c056a090aabc57a26e07..c6b78b7532ce070b5e187d247151213f73636b68 100644
--- a/addons/mail/res_users.py
+++ b/addons/mail/res_users.py
@@ -150,7 +150,7 @@ class res_users(osv.Model):
         return self.pool.get('mail.thread').message_get_partner_info_from_emails(cr, uid, emails, link_mail=link_mail, context=context)
 
     def message_get_suggested_recipients(self, cr, uid, ids, context=None):
-        return dict.fromkeys(ids, list())
+        return dict((res_id, list()) for res_id in ids)
 
     def stop_showing_groups_suggestions(self, cr, uid, user_id, context=None):
         """Update display_groups_suggestions value to False"""
diff --git a/addons/project_issue/project_issue.py b/addons/project_issue/project_issue.py
index cadb4291276bc99b9cb6733bfdec8093cf44b319..338eebf099d8259a1fc95f54e3c58789344e00d9 100644
--- a/addons/project_issue/project_issue.py
+++ b/addons/project_issue/project_issue.py
@@ -133,7 +133,7 @@ class project_issue(osv.Model):
         """
         Calendar = self.pool['resource.calendar']
 
-        res = dict.fromkeys(ids, dict())
+        res = dict((res_id, {}) for res_id in ids)
         for issue in self.browse(cr, uid, ids, context=context):
             values = {
                 'day_open': 0.0, 'day_close': 0.0,
diff --git a/addons/purchase_requisition/purchase_requisition.py b/addons/purchase_requisition/purchase_requisition.py
index d89b33007a56584746c8e8b25acec2cc0b82c7f3..35a46ecbcab1da16efc50904feeaa3b967067b9d 100644
--- a/addons/purchase_requisition/purchase_requisition.py
+++ b/addons/purchase_requisition/purchase_requisition.py
@@ -32,7 +32,7 @@ class purchase_requisition(osv.osv):
     _inherit = ['mail.thread', 'ir.needaction_mixin']
 
     def _get_po_line(self, cr, uid, ids, field_names, arg=None, context=None):
-        result = {}.fromkeys(ids, [])
+        result = dict((res_id, []) for res_id in ids)
         for element in self.browse(cr, uid, ids, context=context):
             for po in element.purchase_ids:
                 result[element.id] += [po_line.id for po_line in po.order_line]
diff --git a/addons/stock/stock.py b/addons/stock/stock.py
index 2603867347408397f949e8c2b7f07472707848a6..9e3c8cf69ea0e372c58ce5e47b1d2e111ab6becf 100644
--- a/addons/stock/stock.py
+++ b/addons/stock/stock.py
@@ -3623,7 +3623,7 @@ class stock_package(osv.osv):
 
     def _get_package_info(self, cr, uid, ids, name, args, context=None):
         default_company_id = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.id
-        res = {}.fromkeys(ids, {'location_id': False, 'company_id': default_company_id, 'owner_id': False})
+        res = dict((res_id, {'location_id': False, 'company_id': default_company_id, 'owner_id': False}) for res_id in ids)
         for pack in self.browse(cr, uid, ids, context=context):
             if pack.quant_ids:
                 res[pack.id]['location_id'] = pack.quant_ids[0].location_id.id
@@ -4113,7 +4113,7 @@ class stock_picking_type(osv.osv):
 
     def _get_tristate_values(self, cr, uid, ids, field_name, arg, context=None):
         picking_obj = self.pool.get('stock.picking')
-        res = dict.fromkeys(ids, [])
+        res = {}
         for picking_type_id in ids:
             #get last 10 pickings of this type
             picking_ids = picking_obj.search(cr, uid, [('picking_type_id', '=', picking_type_id), ('state', '=', 'done')], order='date_done desc', limit=10, context=context)
diff --git a/addons/website_event_track/models/event.py b/addons/website_event_track/models/event.py
index 1130023cd2cddae3958989732ed3f81f2dd923d7..fd10b912e5ed030267c721b8126018c5f200969c 100644
--- a/addons/website_event_track/models/event.py
+++ b/addons/website_event_track/models/event.py
@@ -132,7 +132,7 @@ class event_event(osv.osv):
         }
 
     def _get_tracks_tag_ids(self, cr, uid, ids, field_names, arg=None, context=None):
-        res = dict.fromkeys(ids, [])
+        res = dict((res_id, []) for res_id in ids)
         for event in self.browse(cr, uid, ids, context=context):
             for track in event.track_ids:
                 res[event.id] += [tag.id for tag in track.tag_ids]
diff --git a/addons/website_mail_group/controllers/main.py b/addons/website_mail_group/controllers/main.py
index 59478b37fa3c16e2d5b72e703633fe0111b9f923..0e45a1663cfb1cddcabffe7e782e86505257543c 100644
--- a/addons/website_mail_group/controllers/main.py
+++ b/addons/website_mail_group/controllers/main.py
@@ -34,12 +34,13 @@ class MailGroup(http.Controller):
         groups = group_obj.browse(cr, uid, group_ids, context)
         # compute statistics
         month_date = datetime.datetime.today() - relativedelta.relativedelta(months=1)
-        group_data = dict.fromkeys(group_ids, dict())
+        group_data = dict()
         for group in groups:
-            group_data[group.id]['monthly_message_nbr'] = mail_message_obj.search(
-                cr, SUPERUSER_ID,
-                [('model', '=', 'mail.group'), ('res_id', '=', group.id), ('date', '>=', month_date.strftime(tools.DEFAULT_SERVER_DATETIME_FORMAT))],
-                count=True, context=context)
+            group_data[group.id] = {
+                'monthly_message_nbr': mail_message_obj.search(
+                    cr, SUPERUSER_ID,
+                    [('model', '=', 'mail.group'), ('res_id', '=', group.id), ('date', '>=', month_date.strftime(tools.DEFAULT_SERVER_DATETIME_FORMAT))],
+                    count=True, context=context)}
         values = {'groups': groups, 'group_data': group_data}
         return request.website.render('website_mail_group.mail_groups', values)
 
diff --git a/openerp/modules/graph.py b/openerp/modules/graph.py
index b0f6141e78f828f31b29088d15e18013bf679e48..48666d9d9f3ab2eaec149a0d1969250347962bc5 100644
--- a/openerp/modules/graph.py
+++ b/openerp/modules/graph.py
@@ -70,7 +70,7 @@ class Graph(dict):
             return
         # update the graph with values from the database (if exist)
         ## First, we set the default values for each package in graph
-        additional_data = dict.fromkeys(self.keys(), {'id': 0, 'state': 'uninstalled', 'dbdemo': False, 'installed_version': None})
+        additional_data = dict((key, {'id': 0, 'state': 'uninstalled', 'dbdemo': False, 'installed_version': None}) for key in self.keys())
         ## Then we get the values from the database
         cr.execute('SELECT name, id, state, demo AS dbdemo, latest_version AS installed_version'
                    '  FROM ir_module_module'