使用用户输入,我创建了一个嵌套列表
列表示例:[[a, 1], [b, 2], [c, 3]]
我解决这个问题的方法是让用户通过索引输入字母变量,然后在索引中添加1。下面是我尝试解决这个问题的两种方法的更多示例:
total_list
:[['chloe', '2018'], ['camille', '2002'], ['hannah', '1979']]
(个别列表为peep_list
)
假设我想知道chloe是哪一年结婚的,所以我输入"chloe"。我试图在列表中搜索名称,然后向右移动一个位置并保存该值。
person1 = str(input("Enter the name of the first person you would like to compare: "))
index = 0
age1 = 0
示例/attempt 1:
for peep_list in total_list:
for person in peep_list:
index(person1)
age1 = index + 1
示例/attempt 2:
for peep_list in total_list:
for person in peep_list:
if index == person1:
age1 = index + 1
else:
index = index +1
我接近这个正确吗?
编辑:我的目标是使用"列表逻辑">
您的list
具有[[key, value],[key, value],...]
格式,dict
可以使用此格式转换list
。通过转换为dict
,您可以使用提供的名称作为键。
data = [['chloe', '2018'], ['camille', '2002'], ['hannah', '1979']]
db = dict(data)
person = input("Enter the name of the first person you would like to compare: ")
print(db[person])
如果您只能使用"列表逻辑"来执行此操作,则以下是一种可能性。
data = [['chloe', '2018'], ['camille', '2002'], ['hannah', '1979']]
person = input("Enter the name of the first person you would like to compare: ")
for (name, year) in data:
if name == person:
print(f'{name} was married in {year}')
break
total_list
由子列表组成。在每个子列表中,第一项是名称,第二项是年份。
因此,当您遍历total_list
时,检查当前子列表中的第一项。如果它等于目标名称,那么打印(或赋值给另一个变量,或任何你喜欢的)子列表中的第二项。
name = 'chloe'
for sublist in total_list:
if sublist[0] == name:
print(name, 'was married in', sublist[1])
所以从技术上讲,你的方法是错误的,但你很接近。你似乎想从你的名单中寻找一个名字,并检索他们结婚的年份。使用Dictionary
people_list = {} #here you are declaring an empty Dict
inputname = str(input("have the user input a name which will be used as the key in your dict"))
inputyear = str(input("have the user input a year which will be the value relating to the previous key "))
people_list[inputname] = inputyear
现在如果你想找到任何特定的人的年份,你可以这样做
name = str(input("now give the name of the person you want the year of marriage"))
print(f'{name}s year of marriage was {people_list[name]} ')
print(name,"s year of marriage was ",people_list[name])