我想在列表列表中的元组中搜索用户输入。
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]
但是如果我想保持列表类型怎么办?
答案 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]]