首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >抵消Python的唯一值

抵消Python的唯一值
EN

Stack Overflow用户
提问于 2013-09-26 14:39:25
回答 2查看 70关注 0票数 0

你好,我有一个包含如下数据的对讲机:

代码语言:javascript
复制
{1301: Counter({'total': 18, 
               'inDevelopment': 13, 
                'isDuplicate': 2, 
                'inAnalysis': 2,
                'inQuest': 1}),
 1302: Counter({'total': 15, 
                'inDevelopment': 9, 
                 'inQuest': 1, 
                 'inValidation': 1, 
                  'inAnalysis': 1,
                  'ongoing' : 3})}

如何在列表中检索其值而不重复。我的意思是,我想提取所有现有的值,但我不想把它们全部提取出来,我希望它们是复制的,而不是,而不是,所以:

代码语言:javascript
复制
 [' inDevelopment','isDuplicate','inAnalysis', 'inQuest','total', 'inDevelopment','inQuest', 'inValidation','inAnalysis', 'ongoing']

输出如下:

代码语言:javascript
复制
['total','inDevelopment','isDuplicate','inAnalysis','inQuest','inValidation','ongoing']

任何帮助都将不胜感激,谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-26 14:45:22

可以使用Counter运算符联合|对象:

代码语言:javascript
复制
>>> from collections import Counter
>>> a = Counter('123')
>>> b = Counter('44144')
>>> a
Counter({'2': 1, '3': 1, '1': 1})
>>> b
Counter({'4': 4, '1': 1})
>>> a | b
Counter({'4': 4, '2': 1, '3': 1, '1': 1})
>>> list(a | b)
['2', '3', '1', '4']

在Python2.x

代码语言:javascript
复制
>>> from collections import Counter
>>> d = {1301: Counter({'total': 18,
    ...
...                   "ongoing" : 3})}
>>> list(reduce(lambda a,b:a|b, d.values()))
['inAnalysis', 'inQuest', 'inDevelopment', ' inDevelopment', 'inValidation', 'ongoing', 'isDuplicate', 'total']

在Python 3.x中

代码语言:javascript
复制
>>> from collections import Counter
>>> from functools import reduce
>>> d = ...
>>> list(reduce(lambda a,b:a|b, d.values()))
['inValidation', 'total', ' inDevelopment', 'inDevelopment', 'isDuplicate', 'ongoing', 'inQuest', 'inAnalysis']

更新

您也可以使用set.union

代码语言:javascript
复制
>>> list(set().union(*d.values()))
['inValidation', 'inDevelopment', 'isDuplicate', 'total', 'ongoing', 'inAnalysis', 'inQuest', ' inDevelopment']

这在Python2.x/3.x两种代码中都可以实现。

票数 1
EN

Stack Overflow用户

发布于 2013-09-26 15:01:02

您可以将np.uniqueimport numpy as np

代码语言:javascript
复制
>>> d = {1301: Counter({'total': 18,
                'inDevelopment': 13,
                 'isDuplicate': 2,                 'inAnalysis': 2,
                'inQuest': 1}),
  1302: Counter({'total': 15,                 'inDevelopment': 9,
                  'inQuest': 1,
                  'inValidation': 1,
                   'inAnalysis': 1,
                   "ongoing" : 3})}

给出

代码语言:javascript
复制
>>> np.unique(list(d[1301]|d[1302]))

array(['inAnalysis', 'inDevelopment', 'inQuest', 'inValidation',
       'isDuplicate', 'ongoing', 'total'], 
      dtype='|S13')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19031299

复制
相关文章

相似问题

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