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

时间:2017-07-03 02:54:22

标签: python

我知道这很简单"但是我无法解决这个问题或者在此找到帮助,这让我发疯了。我想创建一个具有多个值的多维列表,例如每行3个值,我希望能够根据给定的值找出任何行的信息。

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

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

所以我列出了这样一个列表:

theList = []

theList = [{"dog","brown","happy" }, {"cat","black", "sad"}, {"bird","green", "energetic"} ]

如何根据值找出某些内容的信息?例如,我想找出狗的颜色?我如何在列表中搜索" dog"并找出第二件事的价值(列表部分中的值[1]包含" dog"?

或者为此做一个多维字典会更容易吗?

2 个答案:

答案 0 :(得分:4)

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

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

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']

以下是等效的for循环:

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

Out[]:
['brown']

但你也可以问其他问题,比如哪些动物是green

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

答案 1 :(得分:1)

只需将宠物的名称用作词典中的key

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

例如,我想找出狗的颜色?

>>> myDict["dog"]["Color"]
'brown'