• I want to find the matching item from the below given list.My List may be super large.The very first item in the tuple "N1_10" is duplicated and matched with another item in another arraytuple in 1st ...


I want to find the matching item from the below given list.My List may be super large.
The very first item in the tuple "N1_10" is duplicated and matched with another item in another array
tuple in 1st array in the ListA ('N1_10', 'N2_28')
tuple in 2nd array in the ListA ('N1_10', 'N3_98')
ListA = [[('N1_10', 'N2_28'), ('N1_35', 'N2_44')],
[('N1_22', 'N3_72'), ('N1_10', 'N3_98')],
[('N2_33', 'N3_28'), ('N2_55', 'N3_62'), ('N2_61', 'N3_37')]]
what I want for the output is
output --> [('N1_10','N2_28','N3_98') , .... and the rest whatever match one of the
key will get into same tuple]
If you guys think , changing the data structure of the ListA is better option , pls feel free to advise!
Thanks for helping out!
SIMPLIFIED VERSION
List A = [[(a,x),(b,k),(c,l),(d,m)],[(e,d),(a,p),(g,s)],[...],[...]....]
wantedOutput --> [(a,x,p),(b,k),(c,l),(d,m,e),(g,s).....]
解决方案
Update: After rereading your question, it appears that you're trying to create equivalence classes, rather than collecting values for keys. If
[[(1, 2), (3, 4), (2, 3)]]
should become
[(1, 2, 3, 4)]
, then you're going to need to interpret your input as a graph and apply a connected components algorithm. You could turn your data structure into an adjacency list representation and traverse it with a breadth-first or depth-first search, or iterate over your list and build disjoint sets. In either case, your code is going to suddenly involve a lot of graph-related complexity, and it'll be hard to provide any output ordering guarantees based on the order of the input. Here's an algorithm based on a breadth-first search:
import collections
graph = collections.defaultdict(set)
for l in ListA:
for first, second in l:
# breadth-first search the graph to produce the output
output = []
marked = set() # a set of all nodes whose connected component is known
for node in graph:
if node not in marked:
# this node is not in any previously seen connected component
# run a breadth-first search to determine its connected component
frontier = set([node])
connected_component = []
while frontier:
marked |= frontier
connected_component.extend(frontier)
# find all unmarked nodes directly connected to frontier nodes
# they will form the new frontier
new_frontier = set()
for node in frontier:
new_frontier |= graph[node] - marked
frontier = new_frontier
output.append(tuple(connected_component))
Don't just copy this without understanding it, though; understand what it's doing, or write your own implementation. You'll probably need to be able to maintain this. (I would've used pseudocode, but Python is practically as simple as pseudocode already.)
In case my original interpretation of your question was correct, and your input is a collection of key-value pairs that you want to aggregate, here's my original answer:
import collections
clusterer = collections.defaultdict(list)
for l in ListA:
for k, v in l:
clusterer[k].append(v)
output = clusterer.values()
defaultdict(list) is a dict that automatically creates a list as the value for any key that wasn't already present. The loop goes over all the tuples, collecting all values that match up to the same key, then creates a list of (key, value_list) pairs from the defaultdict.
(The output of this code is not quite in the form you specified, but I believe this form is more useful. If you want to change the form, that should be a simple matter.)

展开全文
• 人生总有段时光是你一直努力，但是默默无为没有任何回报和结果，我是王大毛～练习python自带函数的使用，快速掌握python数据类型的各个内置方法：今天分享段简单的实现在一段字符串找出重复的字段，如有...

人生总有一段时光是你一直在努力，但是默默无为没有任何回报和结果，我是王大毛～
练习python中自带函数的使用，快速掌握python数据类型的各个内置方法：
今天分享一段简单的实现在一段字符串中，找出重复的字段，如有更好的方法，欢迎评论区留言。
用到的内置方法有：
str.split:分割字符串
set.(list): 找出list中重复的元素，得到的结果以没有key，只有value的字典类型；
count(list.obj)：count() 方法用于统计某个元素在列表中出现的次数。
str_1 = '''It was designed by the prestigious architect Zaha Hadid and has a wave-like roof that is 160 metres long.
Today's special events are designed to arouse interest in the Olympics around the world and to encourage British fans too.
Many failed to get Olympic tickets in the recent sales process.
According to a new survey for the BBC, 53% of Londoners think the process was "not fair".
But the same survey found support is growing for London 2012. Of the 1,000 people surveyed, 73% said they backed the Games - up from 69% in 2006‘’‘
new_list=list(str_1.split(' '))#以空格键分割str_1中每个单词且强制转换成list
new_1 = set(new_list) #去除list中重复的字符串
for i in new_1: #循环新得到的去重的list，得到i
#print(i)
#print(new_list.count(i))
print(str(i) + '在文章中出现了' + str(new_list.count(i)) + '次') #i在str_1中出现的次数
if new_list.count(i) > 5: #大于5次出现的字符串
#print(i)
#print(new_list.count(i))
print(str(i) + '在文章中出现了' + str(new_list.count(i)) + '次')
输出结果：
support在文章中出现了1次
for在文章中出现了2次
of在文章中出现了1次
69%在文章中出现了1次
wave-like在文章中出现了1次
tickets在文章中出现了1次
"not在文章中出现了1次
special在文章中出现了1次
Many在文章中出现了1次
growing在文章中出现了1次
get在文章中出现了1次
But在文章中出现了1次
Today's在文章中出现了1次
Londoners在文章中出现了1次
has在文章中出现了1次
1,000在文章中出现了1次
prestigious在文章中出现了1次
the在文章中出现了9次
2006.在文章中出现了1次
a在文章中出现了2次
are在文章中出现了1次
roof在文章中出现了1次
they在文章中出现了1次
by在文章中出现了1次
Olympics在文章中出现了1次
failed在文章中出现了1次
According在文章中出现了1次
2012.在文章中出现了1次
was在文章中出现了2次
from在文章中出现了1次
metres在文章中出现了1次
Games在文章中出现了1次
is在文章中出现了2次
160在文章中出现了1次
and在文章中出现了2次
in在文章中出现了3次
events在文章中出现了1次
think在文章中出现了1次
BBC,在文章中出现了1次
Olympic在文章中出现了1次
people在文章中出现了1次
survey在文章中出现了2次
fans在文章中出现了1次
sales在文章中出现了1次
same在文章中出现了1次
found在文章中出现了1次
to在文章中出现了4次
process在文章中出现了1次
designed在文章中出现了2次
up在文章中出现了1次
that在文章中出现了1次
encourage在文章中出现了1次
said在文章中出现了1次
Zaha在文章中出现了1次
surveyed,在文章中出现了1次
73%在文章中出现了1次
around在文章中出现了1次
British在文章中出现了1次
-在文章中出现了1次
new在文章中出现了1次
It在文章中出现了1次
Of在文章中出现了1次
interest在文章中出现了1次
London在文章中出现了1次
53%在文章中出现了1次
backed在文章中出现了1次
arouse在文章中出现了1次
world在文章中出现了1次
architect在文章中出现了1次
recent在文章中出现了1次
Process finished with exit code 0
the在文章中出现了9次
Process finished with exit code 0

展开全文
• 本文实例讲述了python实现查找excel里某一列重复数据并且剔除后打印的方法。。具体分析如下：python里面excel的简单读写操作我这里推荐使用xlrd(特别是读操作)import xlrddef open_excel(fileName="simple.xls"):...

本文实例讲述了python实现查找excel里某一列重复数据并且剔除后打印的方法。。具体分析如下：
在python里面excel的简单读写操作我这里推荐使用xlrd(特别是读操作)
import xlrd
def open_excel(fileName="simple.xls"):
try:
fileHandler = xlrd.open_workbook(fileName)
return fileHandler
except Exception, e:
print str(e)
def scan_excel(sheet_name1=u'Sheet1'):
handler = open_excel()
page = handler.sheet_by_name(sheet_name1)
return page
def trim_cols(index=0):
page = scan_excel()
col1 = page.col_values(index)
col2 = []
for item in col1:
if item not in col2:
col2.append(item)
print col1
print col2
def main():
trim_cols()
if __name__ == "__main__":
main()
输出结果：
[1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0, 4.0]
[1.0, 2.0, 3.0, 4.0]
希望本文所述对大家的Python程序设计有所帮助。

展开全文
• '取同一列中重复值 常用函数 一、 =INDEX(B$2:B$121,MATCH(0,COUNTIF(AD$1:AD1,B$2:B$121),0))&"" 输入后按ctrl+Shift+Enter, 复制粘贴 =INDEX(array1,MATCH(0,COUNTIF(array2,array1),0))&"" 二... '取同一列中不重复值 常用函数 一、 =INDEX(B$2:B$121,MATCH(0,COUNTIF(AD$1:AD1,B$2:B$121),0))&""
输入后按ctrl+Shift+Enter,  复制粘贴
=INDEX(array1,MATCH(0,COUNTIF(array2,array1),0))&""
二、
 =COUNTIF(C$1:C2,C2) -复制与数据相同的数量后，筛选为1的即可 ’取同一列中不重复值 其它函数 公式一: ＝INDEX（$A$1:$A$21，SMALL（IF（MATCH（A$2:A$21，A$2: A$21，）＝ROW（$2:$21）-1，ROW（$2:$21）.ROW（A1）& "" 公式二: ＝INDEX（$A$1:$A$21，MATCH（COUNTIF（D$1: D1，A$2: A$21），）1）&""
公式三:
＝INDEX（$A$1:$A$21，MIN（IF（COUNTIF（ES1:E1，A$2:A$22）＝0，ROW（$2:$22）））&""
公式四:
＝INDIRECT（A'＆MIN（IF（COUNTIF（F$1:F1，A$2: A$21）＝0，ROW（$2: $21）））&""  公式五: ＝LOOKUP（1/（COUNTIF（G$1:G1，A$2: A$21）-1），A$2: A$21）
公式六:
＝OFFSET（SA$1，MIN（IF（COUNTIF（$H$1:H1，$A$2:$A$21）＝0，ROW（SA$2: $A$21））-1，）
公式七:
＝OFFSET（SA$1，MATCH（COUNTIF（SI$1:I1，$AS2:$A$21），），）&"" 以上所有公式都是输入后按ctrl+Shift+Enter, 复制粘贴 展开全文 • A代表待筛选的全集合，B为子集合。 目的：从A列中筛选，B列中已经有的数据。使用如下语句 针对C2插入函数 =IF(COUNTIF(B:B,A2),TRUE,FALSE) 扩展到整列 • 应为业务需要，数据清理的时候需要对重复的数据进行清洗，所以用到了下面两种方案来找出重复的数据，然后将重复的部分数据清理掉，方法如下。 推荐使用第一中方法，因为第二种方法还需要使用个函数来将... • 购买本课程后，可以加51CTO学院李宁老师官方交流群：550369460注意，该群只允许购买李宁老师课程的学员进行技术交流，加群时需要提供51CTO购买李宁老师课程的订单编号(任何个课程的订单编号即可)。本课程使用... • 等同于以下这个工作的问题： • 不要为了大小而直接应答包含代码。 每个函数都是根据其作者命名的，很容易问题找到。thefourtheye的解现在等于Mark Reed的个，并以原始形式计算，即基于itertools.groupby的解的第二个状态。 每个都进行... • import xlrd def open_excel(fileName="simple.xls"): try: fileHandler = xlrd.open_workbook(fileName) return fileHandler except ..., 转载请注明用python查找excel里面的某一列重复数据，剔除之后打印！ • 寻找每行被复制的索引和没有冗余的重复的索引。我发现了这个代码here(感谢unutbu)并修改了它以读取ndarray，它70%的时间都能工作，但是30%的时间它会将错误的图像识别为重复的。如何改进它来检测正确的... • ringa_lee2017-04-17 11:34:461楼求集合的交集：>>> set2 = set(list2)>>> set3 = set(list3)>>> print set2 & set 3set(['6'])其他操作：>>... y = set('bd... • 今天小编要跟大家分享的文章是关于Linux系统如何使用命令查找重复文件。不管是Windows电脑还是Linux电脑，使用的过程，或多或少都会留下很多重复的文件。这些文件不仅会占用我们的磁盘，还会拖累我们的系统，... • 针对表一列重复数据去重只留一条前提一、确认重复的数据二、确认要保留的一条数据三、找出要删除的重复数据四、删除重复数据 前提 创建表tab_user CREATE TABLE tab_user ( id int(11) NOT NULL common '... • 注意:我们希望能够尽快以你的语言为你提供...Access 提供了多种数据表添加或删除的方法。 你可以使用数据表视图来添加或删除，并设置这些的数据类型。 此外，你还可以通过任务窗格添加字段，或者打开数... • 我有个包含两列的表格-艺术家，release_id我可以运行哪个查询来显示重复记录？例如 我的桌子是ArtistX : 45677ArtistY : 378798ArtistX : 45677ArtistZ : 123456ArtistY : 888888ArtistX : 2312ArtistY: 378798... • 将哈希/标识符存储numpy.array.这可能是存储它们最紧凑的方式. 2700万条记录时间32字节/散列是864 MB.这应该适合现在体面的机器的记忆.为了加快访问速度,您可以使用第个例如将2个字节的散列作为collections.... • 假设我有几个列表数据，例如4个：list1=['2','5','10']list2=['3','6','8']list3=['7','6','9']list4=['5','4','3']我如何找到列表中在其他的列表含有的数据？重复的数据，比如说6list2和list3都含有。就打印... • 我正在使用Python并考虑以下问题：给出一个列表,例如[1,0,-2,0,0,4,5,0,3]多次包含0的整数,我希望有这些0和每个的索引是它出现列表的次数,直到出现不同的元素或列表结束.给定l = [1,0,-2,0,0,4,5,0],函数将... • python - 统计某一列不同项的重复次数 并新增一列赋值 需求： 比如一个dataframe里有一个字段为all ，想知道all里每一行的值整个dataframe一红出现多少次 ，并后新增一列赋值（‘次数’一列为自行添加） ... • 例如 123456.txt内容如下90115601,2137786735 3668490115601,2137786735 3668490118301,17751822 3489890145133,2050186877 384790145133,2050186877 384790151825,3580430507 3797490151825,35... • 数组某些数字是重复的，但不知道有几个数字重复伦理，也不知道每个数字重复了多少次，找出任意重复的数字注意：时间复杂度O(n)，空间复杂度O(1)怎么解决勒？？？分析：利用题目0~n-1范围，可以运用数组下标... • mysql 数据表中查找重复记录复制代码 代码如下:select user_name,count(*) as count from user_table group by user_name having count>1;这个我很早有发过个asp下的ACCESS 的时间： 2009-07-10刚开始,根据我... • 如果我的数据框具有包含相同名称的,是否有办法将具有相同名称的与某种功能(即总和)组合一起？例如：In [186]:df["NY-WEB01"].head()Out[186]:NY-WEB01 NY-WEB01DateTime2012-10-18 16:00:00 5.6 2.82012-10-18... • 查询B是否有重复项 =IF(COUNTIF(B:B,B8)>1,"重复","不重复") • 找出数组任意重复的数字。例如，如果输入长度为7的数组{2, 3, 1, 0, 2, 5, 3}，那么对应的输出是重复的数字2或者3。思路从哈希表的思路拓展，重排数组：把扫描的每个数字(如数字m)放到... • EXCEL第一列内容相同的，第二列单元格内容相应合并同一个单元格Excel 问题描述抽取第一列中的相同内容抽取第二列内容道绿框第二列 Excel 问题描述 红色框是原始的数据，我的目的是想要通过红色框的转换成绿色框... • (1)查询某一列重复记录 语句： SELECT Name FROM dbo.Member t WHERE Name IN (SELECT Name FROM dbo.Member GROUP BY Name HAVING COUNT(Name)>1 ) ORDER BY t.Name 查询结果： (2)查询某一列重复的... • 使用np.diff和@WarrenWeckesser给的here方法来查找数组的零运行：import numpy as npdef zero_runs(a): # from linkiszero = np.concatenate(([0], np.equal(a, 0).view(np.int8), [0]))absdiff = np.abs(np.... • 1.将某一列的数值想加 利用awk命令 awk '{print$n}' | awk '{sum+=$1}END{print sum}' awk '{print$1}' | awk '{sum+=$1}END{print sum}' 例： 2.将行的数值想加 awk '{sum=0;for (i=1;i;i++){sum+=$i}print sum}...

...