我有一个很长的字符串,我正在从文件中逐行读取它。我试图将这些行转换为字典,并尝试检查给定的值是否存在于字典键值中,它必须返回 true。
例子:
>>> data
'Xyz pqrs,uvw'
>>> dict(line.split(',') for line in data.strip().splitlines())
{'Xyz pqrs': 'uvw'}
Run Code Online (Sandbox Code Playgroud)
这是我得到的输出
预期结果:
在元组中
{'Xyz' : ('pqrs','uvw')}
Run Code Online (Sandbox Code Playgroud)
或列出
{'Xyz' : ['pqrs','uvw']}
Run Code Online (Sandbox Code Playgroud)
如果 data.values() 中存在“pqrs”,则必须打印“Yes”
>>> data2
{'Xyz': ['pqrs', 'uvw']}
>>>
>>> if 'pqrs' in (d for d in data2.values()):
... print "yes"
...
>>> if 'pqrs' in data2.values():
... print "yes"
...
Run Code Online (Sandbox Code Playgroud)
我尝试了两种方法,但没有从输出中得到任何结果。
任何提示都会有帮助。
您可以使用嵌套字典理解创建字典:
>>> data = """Xyz pqrs,uvw
... Abc foo,bar,blub"""
>>> d = {key: values.split(",") for key, values in
(line.split() for line in data.splitlines())}
>>> d
{'Xyz': ['pqrs', 'uvw'], 'Abc': ['foo', 'bar', 'blub']}
Run Code Online (Sandbox Code Playgroud)
然后使用以下命令检查遏制any:
>>> any("pqrs" in v for v in d.values())
True
Run Code Online (Sandbox Code Playgroud)
更新:由于您似乎使用的是 Python 2.6,因此在dict-compressives存在之前,您必须使用以下等效形式:
>>> d = dict((key, values.split(",")) for key, values in
(line.split() for line in data.splitlines()))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2054 次 |
| 最近记录: |