SonameDepsProcessor: fix 'set' object has no attribute 'items' (bug 656492)

Use collections.defaultdict to ensure that requires_map
contains correct defaults.

Fixes: 1364cd44e7a6 ("SonameDepsProcessor: handle internal libs without DT_SONAME (bug 646190)")
Bug: https://bugs.gentoo.org/656492
diff --git a/pym/portage/util/_dyn_libs/soname_deps.py b/pym/portage/util/_dyn_libs/soname_deps.py
index c6302af..544cbc8 100644
--- a/pym/portage/util/_dyn_libs/soname_deps.py
+++ b/pym/portage/util/_dyn_libs/soname_deps.py
@@ -3,7 +3,9 @@
 
 from __future__ import unicode_literals
 
+import collections
 import fnmatch
+import functools
 from itertools import chain
 import os
 import re
@@ -33,7 +35,8 @@
 		"""
 		self._provides_exclude = self._exclude_pattern(provides_exclude)
 		self._requires_exclude = self._exclude_pattern(requires_exclude)
-		self._requires_map = {}
+		self._requires_map = collections.defaultdict(
+			functools.partial(collections.defaultdict, set))
 		self._provides_map = {}
 		self._provides_unfiltered = {}
 		self._basename_map = {}
@@ -84,8 +87,7 @@
 			for x in entry.needed:
 				if (self._requires_exclude is None or
 					self._requires_exclude.match(x) is None):
-					self._requires_map.setdefault(
-						multilib_cat, {}).setdefault(x, set()).add(runpaths)
+					self._requires_map[multilib_cat][x].add(runpaths)
 
 		if entry.soname:
 			self._provides_unfiltered.setdefault(
@@ -105,7 +107,6 @@
 		provides_unfiltered = self._provides_unfiltered
 
 		for multilib_cat in set(chain(requires_map, provides_map)):
-			requires_map.setdefault(multilib_cat, set())
 			provides_map.setdefault(multilib_cat, set())
 			provides_unfiltered.setdefault(multilib_cat, set())
 			for soname, consumers in list(requires_map[multilib_cat].items()):