使用多个值访问字典键

时间:2014-01-28 23:50:00

标签: python dictionary

我有一个作业,第一部分,我将访问一个文本文件,其中包含一个生产规则列表。我从这个文本文件中创建了一个字典列表:

x = y
x = y x
y = 0
y = 1

看起来像这样:

myList = [{'x': 'y'}, {'x':'y x'}, {'y': 0}, {'y': 1}]

我希望在应用这些规则时找到所有可能的输出。我将尝试稍后编写代码,并将替换非终结值并输出一堆二进制文件。但是,对于这本词典:

{'x': 'y x'}

'y x'是一个字符串所以我不能用任何东西替换y或x,除非我明确说出

'y x' = some value

我已编写此代码并编写了一个非常糟糕的测试代码,以查看计算机是否可以查看密钥的值是否存在:

prodList = []


for line in open('name of file', "r"):
    line = line.strip()
    lhs, rhs = line.split(' = ')
    myList.append({lhs:rhs})


if 'y' in myList[0].values():
    print True

现在,如果我运行它,它将打印True并且我可以继续前进,但如果我写的话,我似乎无法编写代码:

if 'y' in myList[1].values():
        print True

它会是真的。

我试着写

myList.append({lhs:rhs.split()})

但这没有帮助,我根本无法检查任何值。有什么方法可以让列表看起来像这样:

myList = [{'x': 'y'}, {'x':'y', x'}, {'y': 0}, {'y': 1}]

所以,如果我写了

if 'y' in myList[1].values():
     print True

它会返回True?

如果这听起来令人困惑,请告诉我,以便我可以尝试澄清更多内容。

我还尝试通过这样做来创建字典而不是字典列表:

for line in open('file.txt', "r"):
    line = line.strip()
    lhs, rhs = line.split(' = ')
    myDict[lhs] = rhs

但是当我打印字典时,我才得到这个:

{'y': 1, 'x': 'x y'} 

我确信有更好的方法可以做到这一点,但我似乎无法找到一种有效的方法。

我再次查看了上面的代码,我只是查看值列表而不是值本身。

我现在的问题是如何为一个键创建具有多个值的字典?当我运行此代码时:

for line in open(fileName, "r"):
    line = line.strip()
    lhs, rhs = line.split(' = ')
    prodList[lhs] = rhs.split()

print prodList

我最终得到了这个:

{'y': [1], 'x': ['y', 'x']}

我不知道如何得到这个

myList = {'x': ['y'], 'x':['y', 'x'], 'y': [0], 'y':[1]}

0 个答案:

没有答案