Python中的唯一列表元素,但更喜欢大写的值



如果元素被添加到array(或setdictionary(,它怎么会产生唯一的元素(set区分大小写(,但更喜欢大写单词而不是小写单词(例如Apple而不是Apple(。

示例:

items = []
items.append('apple')
items.append('orange')
items.append('Apple')
items.append('grapes')
items.append('Orange')

预期结果:

[ 'Apple', 'Orange', 'grapes' ]

最好在第一次出现时保持原始顺序(如上面的结果所示(。

我不想为此使用任何第三方软件包。

您必须使用setcapitalizelower:

unique_items = [i for i in list(set([i.lower() for i in items]))]
for i, unique_item in enumerate(unique_items):
if unique_item.capitalize() in items:
unique_items[i] = unique_item.capitalize()
unique_items.sort(key=lambda e: items.index(e.casefold()))
print(unique_items) # ['grapes', 'Apple', 'Orange']

我使用dictionary:找到了一个更简单的方法

dict = {}
for i in items:
il = i.lower()
if not il in dict or i[0].isupper():
dict[il] = i
print(list(dict.values()))

相关内容

最新更新