Python 从字符串中以元组或列表形式返回字典值
我有一个长字符串,我正在逐行从文件中读取它。我正在尝试将这些行转换为字典,并尝试检查字典键值中是否存在给定的字符串,它必须返回true 示例:Python 从字符串中以元组或列表形式返回字典值,python,dictionary,Python,Dictionary,我有一个长字符串,我正在逐行从文件中读取它。我正在尝试将这些行转换为字典,并尝试检查字典键值中是否存在给定的字符串,它必须返回true 示例: >>> data 'Xyz pqrs,uvw' >>> dict(line.split(',') for line in data.strip().splitlines()) {'Xyz pqrs': 'uvw'} 这是我得到的输出 预期结果: >>> data 'X
>>> data
'Xyz pqrs,uvw'
>>> dict(line.split(',') for line in data.strip().splitlines())
{'Xyz pqrs': 'uvw'}
这是我得到的输出
预期结果:
>>> data
'Xyz pqrs,uvw'
>>> dict(line.split(',') for line in data.strip().splitlines())
{'Xyz pqrs': 'uvw'}
元组
{'Xyz' : ('pqrs','uvw')}
或列表
{'Xyz' : ['pqrs','uvw']}
如果data.values()中存在“pqrs”,则必须打印“是”
我尝试了两种方法,但没有从输出中得到任何结果
任何提示都会有帮助。你必须澄清你的规则。但是从您向我们展示的情况来看,这个正则表达式应该可以完成这项工作
import re
pattern = re.compile(r'[\s,]*')
result = {}
for line in data.strip().splitlines():
parts = pattern.split(line)
key = parts[0]
values = parts[1:]
if 'pqrs' in values:
print 'yes'
result[key] = values
您可以创建具有嵌套词典的词典:
>>> 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']}
然后用任何检查安全壳:
>>> any("pqrs" in v for v in d.values())
True
更新:由于您似乎正在使用Python 2.6,在存在之前,您必须使用以下等效形式:
>>> d = dict((key, values.split(",")) for key, values in
(line.split() for line in data.splitlines()))
我得到了无效的语法?>>>d={key:values.split(“,”)表示键,(line.split()表示数据中的line.splitlines())}文件“”中的值,第1行d={key:values.split(“,”)表示键,(line.splitlines()表示数据中的line.splitlines())}^语法错误:无效语法您使用的Python版本是什么?Dict理解在Python2.7左右是新的(也就是说,不是什么新东西)。或者,尝试dict((key,values.split(“,”)for…)
我正在使用Python2.6。谢谢,我知道了