我有一个作业,第一部分,我将访问一个文本文件,其中包含一个生产规则列表。我从这个文本文件中创建了一个字典列表:
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]}