<h2>澄清后更新</h2>
<p>使用字典和函数:</p>
<pre><code>def get_list(cars, car):
car_parts = car.split()
for list_name, car_info in cars.items():
for item in car_info:
if item in car_parts:
return list_name
return 'unknown'
my_car = ["blue","ford"]
dads_car = ["green","audi"]
cars = {'my_car': my_car, 'dads_car': dads_car}
car = 'the car green'
print(get_list(cars, car))
</code></pre>
<p>现在,如果您设置:</p>
<pre><code>car = 'the car green'
</code></pre>
<p>它打印:</p>
<pre><code>dads_car
</code></pre>
<p>但是:</p>
<pre><code>car = 'light-green truck'
</code></pre>
<p>印刷品:</p>
<pre><code>unknown
</code></pre>
<h2>旧的尝试</h2>
<p>看起来是字典的好用法:</p>
<pre><code>my_car = ["blue","ford"]
dads_car = ["green","audi"]
cars = {'my_car': my_car, 'dads_car': dads_car}
car = 'green'
for list_name, car_info in cars.items():
if car in car_info:
print(list_name)
break
else:
print('unknown')
</code></pre>
<p>现在,如果您设置:</p>
<pre><code>car = 'green'
</code></pre>
<p>它打印:</p>
<pre><code>dads_car
</code></pre>
<p>但是:</p>
<pre><code>car = 'yellow'
</code></pre>
<p>印刷品:</p>
<pre><code>unknown
</code></pre>
<p>您可以向<code>cars</code>添加任意数量的项,而无需更改代码。所以没有大量的<code>for</code>循环。你知道吗</p>
<blockquote>
<p>If present in both lists, then it should show the first list it found in. </p>
</blockquote>
<p>你一找到匹配的就跳出了循环。
只有在执行<code>break</code>时,<code>else:</code>下的代码才会被访问。
从Python3.6开始。词典按其所用的顺序排列。
因此,将首先搜索<code>my_car</code>。你知道吗</p>
<p>具有不同逻辑的替代解决方案:</p>
<pre><code>my_car = ["blue","ford"]
dads_car = ["green","audi"]
cars = {'my_car': my_car, 'dads_car': dads_car}
found = False
for list_name, car_info in cars.items():
for item in car_info:
if item in car:
print(list_name)
found = True
break
if found:
break
else:
print('unknown')
</code></pre>
<p>现在,如果您设置:</p>
<pre><code>car = 'light-green'
</code></pre>
<p>它打印:</p>
<pre><code>dads_car
</code></pre>
<p>或更短的函数:</p>
<pre><code>def get_list(cars, car):
for list_name, car_info in cars.items():
for item in car_info:
if item in car:
return list_name
return 'unknown'
print(get_list(cars, car))
</code></pre>