It was suggested by @stendec that I replace these with variables that evaluate to `dict.viewitems` or `dict.items` as it would be more efficient. The issue here is that rather than call:

```python
for k, v in a:
   # foo
```

We would be calling instead:
```python
for k, v in dict.items(a):
```

Where this current implementation does:
```python
for k, v in getattr(a, 'viewitems')
```

In practice the concern here is only that Mapping objects wouldn't be able to passed in if I changed the code as suggested to assume dict (or even Mapping). The one area that I can find that being an issue is with mock objects. Thoughts?