如何在列表中找到在Python中具有相同值的元素?

时间:2019-02-22 05:08:42

标签: python

我的问题是,如果我的列表是...,如何在列表中查找具有相同字符数的字符串?

myList = ["Hello", "How","are", "you"]

我希望它返回值为3的字符串

上面列表中的示例...

["How","are","you"]

这就是我尝试过的...

def listNum(myList, x):
    for i in range(len(myList)):
        if i == x:
            return(i)



myList = ["Hello", "How","are", "you"]
x = 3
listNum(myList, x)

6 个答案:

答案 0 :(得分:2)

您的功能已关闭,因为您正在将列表 索引 与要与i == x匹配的值进行比较。您要使用myList[i] == x。但是看来您实际上是想检查长度,所以len(myList[i]) == x

但是,我更喜欢遍历循环中的实际元素(或列表理解,如Joran Beasley的评论中所述)。您还提到过要检查是否有一定长度的 string ,因此还可以添加对象类型的检查:

def listNum(myList, x):
    return [item for item in myList if type(item) is str and len(item) == x]

答案 1 :(得分:1)

使用setdefault()方法。此解决方案应该为您提供一个字典,其中包含所有映射到其各自单词的单词长度

代码

myList = ["Hello", "How","are", "you"]

dict1 = {}
for ele in myList:
    key = len(ele)
    dict1.setdefault(key, [])
    dict1[key].append(ele)

输出

我想这是您要实现的输出。

>>> print(dict1)
{5: ['Hello'], 3: ['How', 'are', 'you']}

您可以使用它查询字典并获取与其单词长度相对应的单词。例如dict1[5]将返回'hello'

答案 2 :(得分:0)

如果您打算将其用于进一步的增强,我建议您在一个循环中做出命令,然后就可以轻松检索任意数量的字符。如果您每次都要搜索x = 3或4,则必须遍历列表。而不是一口气做出决定。

myList = ["Hello", "How","are", "you"]

data = {}
for i in myList:
    if len(i) in data:
        data[len(i)].append(i)
    else:
        data[len(i)] = [i]

# print(data)

x = 3
print(data[x])

输出:

['How', 'are', 'you']

答案 3 :(得分:0)

我相信您可以在此处使用Python filter函数。

# list
myList = ["Hello", "How","are", "you"]

# function that examines each element in an array and returns it if True
def filterData(item):
    if(len(item) == 3):
        return True
    else:
        return False

# filter function that takes 'function-to-run' and an array
filtered = filter(filterData, myList)

# result
print('The filtered strings are:')
for item in filtered:
    print(item)

希望有帮助。干杯!

答案 4 :(得分:0)

您可以将函数groupby()与排序列表一起使用:

from itertools import groupby

myList = ["Hello", "How", "are", "you"]

f = lambda x: len(x)
l = sorted(myList, key=f)
r = {k: list(g) for k, g in groupby(l, key=f)}
# {3: ['How', 'are', 'you'], 5: ['Hello']}
r[3]
# ['How', 'are', 'you']

答案 5 :(得分:0)

尝试此代码。

代码

def func_same_length(array,index):
    res = [array[i] for i in range(0,len(array)) if len(array[index]) == len(array[i]) and i!=index]
    return res



myList = ["Hello", "How", "are", "you"]
resSet = set()
for index in range(0,len(myList)):
    res = func_same_length(myList,index)
    for i in res:
        resSet.add(i)

print(resSet)

输出

{'How', 'are', 'you'}