我知道这很简单"但是我无法解决这个问题或者在此找到帮助,这让我发疯了。我想创建一个具有多个值的多维列表,例如每行3个值,我希望能够根据给定的值找出任何行的信息。
例如,如果我有以下数据:
姓名:狗,颜色:棕色,行为:快乐 名称:猫,颜色:黑色,行为:伤心 名称:鸟,颜色:绿色,行为:精力充沛
所以我列出了这样一个列表:
theList = []
theList = [{"dog","brown","happy" }, {"cat","black", "sad"}, {"bird","green", "energetic"} ]
如何根据值找出某些内容的信息?例如,我想找出狗的颜色?我如何在列表中搜索" dog"并找出第二件事的价值(列表部分中的值[1]包含" dog"?
或者为此做一个多维字典会更容易吗?
答案 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'