Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检查Python集合中的字符串_Python_String_List_Duplicates_Set - Fatal编程技术网

如何检查Python集合中的字符串

如何检查Python集合中的字符串,python,string,list,duplicates,set,Python,String,List,Duplicates,Set,希望这个标题不会被否决,但是想不出更好的方式来解释这个问题 根据我在堆栈上看到的建议,我使用集合来忽略重复的行,这是一种处理方法,直到我得到一个用例,在这个用例中,行发生了轻微的变化,但我仍然希望将该行过滤为重复行。在我的示例中,我似乎无法在字符串中搜索某个关键字,因此在我下面的示例中,我排除了第一列(即ID)已经存在的任何新行(在本例中为London) 比如说 London,Sold,2021-12-07,1000000,301909 London,Sold,2021-12-07,100000

希望这个标题不会被否决,但是想不出更好的方式来解释这个问题

根据我在堆栈上看到的建议,我使用集合来忽略重复的行,这是一种处理方法,直到我得到一个用例,在这个用例中,行发生了轻微的变化,但我仍然希望将该行过滤为重复行。在我的示例中,我似乎无法在字符串中搜索某个关键字,因此在我下面的示例中,我排除了第一列(即ID)已经存在的任何新行(在本例中为London)

比如说

London,Sold,2021-12-07,1000000,301909
London,Sold,2021-12-07,1000000,999999
所以我想知道,在添加行或忽略行之前,是否可以检查我的集合中是否存在伦敦ID,但我找不到任何方法。我尝试了元组,但不确定这是我的解决方案,我无法从列表中创建一个集合。我的简单测试用例如下所示,最终结果是我只得到集合中的行,而不是现在正在发生的测试行

testline = 'London,Sold,2021-12-07,1000000,301909'
id = 'London'

j="testline2"
seen = set()
seen.add(testline)

if id not in seen:
    seen.add(j)

print seen  

您已接近解决方案:

testline = ['London','Sold','2021-12-07','1000000','301909'] #updated
id = 'London'

j="testline2"
seen = set(testline) #updated
if id not in seen:
    seen.add(j)

print (seen )

您已接近解决方案:

testline = ['London','Sold','2021-12-07','1000000','301909'] #updated
id = 'London'

j="testline2"
seen = set(testline) #updated
if id not in seen:
    seen.add(j)

print (seen )

似乎您想要一个dict,其中键是第一个值,而不是一个集合

seen = {}
id = testline.partition(',')[0]
seen[id] = testline
...
if id not in seen:
    ...

似乎您想要一个dict,其中键是第一个值,而不是一个集合

seen = {}
id = testline.partition(',')[0]
seen[id] = testline
...
if id not in seen:
    ...

您需要提取逗号分隔字符串的第一个拆分部分,并将其添加到集合中。为此,您可以选择
x.split(',',1)[0]
x.partition(',')[0]

该逻辑与常用的itertools方法相同

配方已在第三方中重新实施,这可以节省您重新发明轮子的时间:

from toolz import unique

L = ['London,Sold,2021-12-07,1000000,301909',
     'London,Sold,2021-12-07,1000000,999999']

res = list(unique(L, key=lambda x: x.partition(',')[0]))

print(res)
['London,Sold,2021-12-07,1000000,301909']

您需要提取逗号分隔字符串的第一个拆分部分,并将其添加到集合中。为此,您可以选择
x.split(',',1)[0]
x.partition(',')[0]

该逻辑与常用的itertools方法相同

配方已在第三方中重新实施,这可以节省您重新发明轮子的时间:

from toolz import unique

L = ['London,Sold,2021-12-07,1000000,301909',
     'London,Sold,2021-12-07,1000000,999999']

res = list(unique(L, key=lambda x: x.partition(',')[0]))

print(res)
['London,Sold,2021-12-07,1000000,301909']

如果您发现如此接近重复的项目,您希望保留第一个或第二个遇到的项目吗?保留第一个出现的项目如果您发现如此接近重复的项目,您希望保留第一个或第二个遇到的项目吗?保留第一个出现的项目与OP的代码有什么不同?我不认为缩进是问题所在。啊,你把
testline
分割成一个列表。你应该在回答中提到这一点。但是,除非你告诉OP如何编程,否则我不认为这本身会有很大帮助。谢谢@ toBasask,我会考虑你的建议在我的未来答案。有什么不同于在OP的代码?我不认为缩进是问题所在。啊,你把
testline
分割成一个列表。你应该在回答中提到这一点。但是,除非你告诉OP如何编程,否则我不认为这本身会有很大帮助。谢谢@ toBasask,我会考虑你的建议在我未来的答案。你能改变<代码> ID <代码>名称吗?对内置程序进行阴影处理不是一个好的做法。当然,在以后的文章中也会这样做,只是作为一个例子,但会记住最佳做法。谢谢,请更改
id
姓名?对内置程序进行阴影处理不是一个好的做法。当然,在以后的文章中也会这样做,只是作为一个例子,但会记住最佳做法。谢谢