Python3 разархивировать список кортежей

В python2.7 следующий код принимает словарь fd (в этом примере представляет частотное распределение слов и их количество) и разделяет его на список из двух списков: [[ключи], [значения ]]:

sortedDKandVs = [zip(*sorted(fd.items(), key=itemgetter(1), reverse=True))] #[word,word,...],[count,count]

Тогда я могу сделать, например:

keys = sortedDKandVs[0]
values = sortedDKandVs[1]

Это больше не работает в Python3, и я хочу знать, как преобразовать код.

Ни один из ответов здесь Как распаковать список кортежей в отдельные списки? больше работает, потому что в Zip-объектах Python3 возвращают итераторы вместо списков, но я не как преобразовать ответы.

Ответ 1

Python 2:

Python 2.7.6 (default, Apr  9 2014, 11:48:52) 
[GCC 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.38)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> di={'word1':22, 'word2':45, 'word3':66}
>>> zip(*sorted(di.items(), key=itemgetter(1), reverse=True))
[('word3', 'word2', 'word1'), (66, 45, 22)]
>>> k,v=zip(*sorted(di.items(), key=itemgetter(1), reverse=True))
>>> k
('word3', 'word2', 'word1')
>>> v
(66, 45, 22)

Python 3:

Python 3.4.1 (default, May 19 2014, 13:10:29) 
[GCC 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.40)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> di={'word1':22, 'word2':45, 'word3':66}
>>> k,v=zip(*sorted(di.items(), key=itemgetter(1), reverse=True))
>>> k
('word3', 'word2', 'word1')
>>> v
(66, 45, 22)

Это точно то же самое для Python 2 и Python 3

Если вам нужны списки vs кортежей (как Python 3, так и Python 2):

>>> k,v=map(list, zip(*sorted(di.items(), key=itemgetter(1), reverse=True)))
>>> k
['word3', 'word2', 'word1']
>>> v
[66, 45, 22]