2017-07-03 71 views
1

我知道这是“简单”,但我无法弄清楚这一点或找到这方面的帮助,这让我疯狂。我想创建一个具有多个值的多维列表,例如每行有3个值,我希望能够根据给定的值找出任何行的信息。在Python中的多维列表中查找项目的最佳方法

举例来说,如果我有以下数据:

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

所以我做出这样的名单:

theList = [] 

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

我怎样才能找出基于价值的东西的信息?例如,我想找出狗的颜色?如何搜索“狗”列表,并找出第二个东西(包含“狗”的列表部分中的值[1])的值?

或者更容易做多维字典这个

+0

字典是这个用例一本教科书的解决方案。 –

+0

嗯好的。我知道一个字典,通常它有一个“键”和“值”,所以它感觉像一个二维数组,我 – king

回答

4

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

另外,如果这真的是你要问那么类型的字典的名单也许是合适的结构的多个问题的表格,如:

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

但你也可以问其他的问题,如该动物是​​:

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 
+0

为这条语句:[d ['color']为d在数据中,如果d ['name '] =='狗'],你能​​写出“长”的方式写出来吗?像什么是你写出来的原始方式,我有点困惑于你在那里使用你的Python代码的快捷方式,如果这是有道理的,顺便说一句,这确实有用,只是想确保我明白代码实际上是如何作品,我对d变量感到困惑,以及你如何在 – king

+1

之后立即编写循环。它被称为[* list comprehension *](https://en.wikipedia.org/wiki/List_comprehension),这是一个非常有用的构造许多语言。出于教学目的,我在上面添加了一个等效的循环。 – AChampion

1

就在字典中使用宠物的名字作为key:??

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

例如,我要找出狗的颜色

>>> myDict["dog"]["Color"] 
'brown' 
相关问题