在列表列表中搜索元组元素而不更改数据结构

时间:2019-05-31 17:37:03

标签: python python-3.x

我想在列表列表中的元组中搜索用户输入。

data = [[('tick1',12),4],[('tick2', 16),7],...]

if user input: 'tick1'
desired output:[('tick1',12),4]

如果我将列表更改为字典,我可以这样做:

data = [[('tick1',12),4],[('tick2', 16),7]]

data = dict(data)

if not any('tick2' in x for x in data):
    print('not found')
else:
    print('found:', x)

#Output
found: [('tick2', 16), 7]

但是如果我想保持列表类型怎么办?

6 个答案:

答案 0 :(得分:3)

您只需遍历列表的所有元素:

for (name, num), other in data:
    if name == user_input:
        print("Found it!")

或者,如果您有理解力:

if any(True for (name, num), other in data if name == user_input):
# Or: if any(name == user_input for (name, num), other in data):
    print("Found it!")

答案 1 :(得分:2)

您可以使用列表推导来遍历子列表,并检查在x[0]中是元组的用户输入

data = [[('tick1',12),4],[('tick2', 16),7]]

user_input = 'tick1'

output = [x for x in data if user_input in x[0]]
# [[('tick1', 12), 4]]

答案 2 :(得分:1)

Array

答案 3 :(得分:1)

如果项目不在列表中,则可以使用next()函数获取第一个匹配项并使用其默认参数:

data = [[('tick1',12),4],[('tick2', 16),7]]
result = next( (item for item in data if item[0][0] == 'tick1'), "not found")
print(result) # [('tick1', 12), 4]

答案 4 :(得分:0)

data = [[('tick1',12),4],[('tick2', 16),7]] # user stored dat
userinput = input() # user giving input

def fun(userinput, data): # a function taking 2 argument, data, userinput
    for i in data: # iterate over each element inside data
        if i[0][0]==userinput: # check if value at position [0][0] is equal to user input
            return i # if equal return that value
    return 'not found' # if no value found equal then return not found

print(fun(userinput, data)) # calling of function and giving input argument , printing the result of return  of the function

答案 5 :(得分:0)

使用第一项等于input_value的值收集所有列表。然后检查大小(如果找不到)。

data = [[('tick1',12),4],[('tick12', 16),7], [('tick1', 11), 4]]
x = 'tick1'
search=[n for n in data for t in n[0] if t==x ]
if len(search) > 0:
    print('found:', search)
else:
    print('not found:', x)

Result: found: [[('tick1', 12), 4], [('tick1', 11), 4]]