在Python中查找多维列表项的最佳方法

在Python中查找多维列表项的最佳方法,python,Python,我知道这很“简单”,但我想不出来,也找不到帮助,这让我发疯。我想制作一个多维列表,它有多个值,比如每行有3个值,并且我希望能够根据给定的值找到行的任何信息 例如,如果我有以下数据: 名称:狗,颜色:棕色,行为:快乐 姓名:猫,颜色:黑色,行为:悲伤 名称:鸟,颜色:绿色,行为:精力充沛 所以我列了一张这样的清单: theList = [] theList = [{"dog","brown","happy" }, {"cat","black", "sad"}, {"bird","green",

我知道这很“简单”,但我想不出来,也找不到帮助,这让我发疯。我想制作一个多维列表,它有多个值,比如每行有3个值,并且我希望能够根据给定的值找到行的任何信息

例如,如果我有以下数据:

名称:狗,颜色:棕色,行为:快乐 姓名:猫,颜色:黑色,行为:悲伤 名称:鸟,颜色:绿色,行为:精力充沛

所以我列了一张这样的清单:

theList = []

theList = [{"dog","brown","happy" }, {"cat","black", "sad"}, {"bird","green", "energetic"} ]
我如何根据某个值找到某个对象的信息?例如,我想知道狗的颜色?我如何在列表中搜索“dog”并找出第二件事的值(包含“dog”的列表部分中的值[1])


或者更容易为此编写多维词典?

只需在词典中使用宠物的名称作为
键即可:

myDict = {  "dog": {"Color":"brown","Behaviour":"happy"},
            "cat": {"Color":"black","Behaviour":"sad"},
            "bird": {"Color":"green","Behaviour":"energetic"}}

例如,我想知道狗的颜色


这实际上取决于你的意图。正如@ViníciusAguiar所指出的,你可以使用动物作为字典中的一个键,但这只有在
名称
是你的主要查找,并且你没有多条不同颜色和行为的
狗时才有意义

或者,如果这真的是一个表,您想问多个问题,那么一个目录列表可能是适当的结构,例如:

In []:
data = [{"name":"dog", "colour":"brown", "behaviour":"happy"},
        {"name":"cat", "colour":"black", "behaviour":"sad"},
        {"name":"bird", "colour":"green", "behaviour":"energetic"} ]

[d['colour'] for d in data if d['name'] == 'dog']

Out[]:
['brown']
以下是循环的等效

In []:
result = []
for d in data:
    if d['name'] == 'dog':
         result.append(d['colour'])
result

Out[]:
['brown']
但你也可以问其他问题,比如哪些动物是绿色的:

In []:
[d['name'] for d in data if d['colour'] == 'green']

Out[]:
['bird']
如果您还可以使用第三方库,则有
pandas
,它擅长处理表数据,例如:

In []:
import pandas as pd
df = pd.DataFrame(data)
df

Out[]:
   name colour  behaviour
0   dog  brown      happy
1   cat  black        sad
2  bird  green  energetic

In []:
df[df['name']=='dog']['colour']

Out[]:
0    brown

字典是这个用例的教科书式解决方案。嗯,好吧。我知道字典通常有一个“键”和一个“值”,所以我觉得它就像一个二维数组。对于这个语句:[d['color']对于数据中的d,如果d['name']=='dog'],你能写出“long”吗写出来的方式?就像你最初写出来的方式一样,我对你在python代码中使用的快捷方式有点困惑,如果这有意义的话,顺便说一句,这确实有效,只是想确保我理解代码实际上是如何工作的,我对d变量和你在调用后如何编写循环感到困惑ed a是许多语言中非常有用的结构。出于教学目的,我在上面为循环添加了一个等价物。
In []:
import pandas as pd
df = pd.DataFrame(data)
df

Out[]:
   name colour  behaviour
0   dog  brown      happy
1   cat  black        sad
2  bird  green  energetic

In []:
df[df['name']=='dog']['colour']

Out[]:
0    brown