首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python3解压缩元组列表

python3解压缩元组列表
EN

Stack Overflow用户
提问于 2014-07-05 21:12:26
回答 1查看 9.1K关注 0票数 3

在python2.7中,以下代码使用字典fd (在本例中表示单词及其计数的频率分布),并将其分为两个列表:[键、值]:

代码语言:javascript
复制
sortedDKandVs = [zip(*sorted(fd.items(), key=itemgetter(1), reverse=True))] #[word,word,...],[count,count]

我可以这样做,例如:

代码语言:javascript
复制
keys = sortedDKandVs[0]
values = sortedDKandVs[1]

这在Python3中不再有效,我想知道如何转换代码。

这里的答案不再有效,因为在How to unzip a list of tuples into individual lists?中,zip对象返回迭代器而不是列表,但是我不知道如何转换答案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-05 22:46:45

Python 2:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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)

--Python2和Python3完全一样

如果您想要列表与元组( Python 3和Python 2):

代码语言:javascript
复制
>>> k,v=map(list, zip(*sorted(di.items(), key=itemgetter(1), reverse=True)))
>>> k
['word3', 'word2', 'word1']
>>> v
[66, 45, 22]
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24590614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档