python - 如何使用 Python 测试唯一字符串和重复字符串(不同大小写)

标签 python string comparison duplicates case-sensitive

我有一个问题需要解决,这对你们大多数人来说可能相当容易,但事实证明对我来说有点困难,因为我以前没有做过这种比较。以下是我正在解析的 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/

相关文章:

javascript - 如何在 JavaScript 中循环、连接内容并将其推送到数组中

java - 扫描仪只读取第一个字而不是行

c# - 如何使用 Salt 创建 SHA256 哈希?

excel - 比较VBA精度问题中的 double

c# - 如何最有效地测试两个数组是否包含 C# 中的等效项

python - tf.constant([1,2,3]) 和 tf.constant([[1,2,3]]) 有什么区别

python - 选择两个日期之间的 DataFrame 行

python - 在 Python 中使用 Selenium 检查页面是否切换到另一个页面

Canvas 内的 Python Tkinter Canvas

c - 如何在 C 中有效地拆分字符串和复制子字符串?