繁体   English   中英

访问字典中的嵌套列表

[英]Access nested list within a dictionary

所以我在一个研究多层词典的实验室工作,目标是接收一个字符串的输入,包括一个国家和位于这个国家的三个城市,即string = "Spain Madrid Barcelona Valencia" ,然后要求输入( city = "Madrid" )。 如果之前已经输入过城市,那么 output 应该是Madrid is located in Spain ,否则 output 应该是No data on input city

我想出了以下几点:

country = "Spain Madrid Barcelona Valencia".split()
#Initialize a dictionary: 
d = {}
#Create another list that only includes cities:
cities_list = country[1:]
#Create a nested list within a dictionary:
d[country[0]] = cities_list

这将提供一个嵌套字典,例如{'Spain': ['Madrid', 'Barcelona', 'Valencia']}

这就是我真正感到困惑的地方。 很明显,我需要访问嵌套列表,但使用 d.values() 只会给出以下 output

dict_values([['Madrid', 'Barcelona', 'Valencia']])

我显然缺少有关该主题的一些基本信息,但是我在这里和 Eric Matthes 的“速成班”中查找过,但仍然找不到可靠的解决方案。

可能我最初的方法是完全错误的? 这里也有几个类似的主题,但似乎没有一个实际上不仅涉及访问列表(我有点理解:d.“Spain”[0]),还涉及将输入与列表值之一进行比较。

无论如何,任何建议都会很棒。

你是对的,要检查你的字典中是否存在Madrid ,你可以使用 for 循环来检查

city_to_be_searched = 'Madrid'
result = None
for k,v in d.items():
    if city_to_be_searched in v:
        result = k
if(result):
    print(f'{city_to_be_searched} located in {result}')
else:
    print('No data found')
Madrid located in Spain

输入后:

city_name = input()

您可以执行以下操作:

result = None
for key in d:
    if city_name in d[key]:
        result = f'{city_name} is located in {key}'

if result:
    print(result)
else:
    print('No data on input city')

您可以使用items()方法遍历字典的键、值对:

city = "Madrid"
found = False
for key, value in d.items():
    if city in value: # check if Madrid is in the values' list
        print(f"{city} is located in {key}")
        found = True
        break
if not found:
    print("No data on input city")

Output:

Madrid is located in Spain

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM