我有一个问题需要解决,这对你们大多数人来说可能相当容易,但事实证明对我来说有点困难,因为我以前没有做过这种比较。以下是我正在解析的 XML 文件的一部分。我得到了一个字符串列表(NAME 的文本),我想确定一些事情。首先,我想看看我得到的名字是否唯一。其次,我想知道是否有重名(同名但大小写不同)。解决这个问题的最佳方法是什么?我不希望列表太大。这是我的 XML 片段和当前代码:
<actions>
<action>
<name>Action_1</name>
</action>
<action>
<name>action_1</name>
</action>
<action>
<name>Action_2</name>
</action>
<action>
<name>ACTION_2</name>
</action>
</actions>
action = elementTree.findall('./actions/action')
nameList = []
# Get the list of actions and stuff them in a list for further comparison.
for a in action:
for child in a:
if child.tag == 'name':
nameList.append(child.text)
print child.text
输出如下:
Action_1
action_1
Action_2
ACTION_2
再一次,我只需要确定我返回的字符串 (name.text) 是否唯一。其次,我想知道是否有重名(同名但大小写不同)。
最佳答案
from collections import defaultdict, Counter
d1 = Counter()
d2 = defaultdict(set)
# count appearence of entries
for x in nameList:
d1[x] += 1
d2[x.lower()].add(x)
# dupes are
for k,v in d1.iteritems():
if v>1: print k
# different appearance of name
for k,v in d2.iteritems():
if len(v) > 1: print k
如果您有一个……长……列表,请查看布隆过滤器。
关于python - 如何使用 Python 测试唯一字符串和重复字符串(不同大小写),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21943816/