Python 从字符串中以元组或列表形式返回字典值

Python 从字符串中以元组或列表形式返回字典值,python,dictionary,Python,Dictionary,我有一个长字符串,我正在逐行从文件中读取它。我正在尝试将这些行转换为字典,并尝试检查字典键值中是否存在给定的字符串,它必须返回true 示例: >>> data 'Xyz pqrs,uvw' >>> dict(line.split(',') for line in data.strip().splitlines()) {'Xyz pqrs': 'uvw'} 这是我得到的输出 预期结果: >>> data 'X

我有一个长字符串,我正在逐行从文件中读取它。我正在尝试将这些行转换为字典,并尝试检查字典键值中是否存在给定的字符串,它必须返回true

示例:

>>> 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。谢谢,我知道了