我是python的新手,并尝试编写可以将字典与字符串进行比较的代码。我的输入字典和字符串如下所示:
l = {'Python' : 'high-level language', 'PHP' : 'ssl', 'Java' : 'low-level language'}
st = 'Python and Php and Java are programming languages. PYTHON and PHP and JAVA are good skills to have. python and php and java are programming languages'
我想在字典键和字符串单词之间进行不区分大小写的比较(在字符串上应用split函数)并输出以下内容:
final_output = {'Python' : 'high-level language',
'and' : 'O',
'Php' : 'ssl',
'anbd' : 'O',
'Java' : 'low-level language',
'are' : 'O',
'programming' : 'O',
'languages.' : 'O',
'PYTHON' : 'high-level language',
'and' : 'O',
'PHP' : 'ssl',
'and' : 'O',
'JAVA' : 'low-level language',
'are' : 'O',
'good' : 'O',
'skills' : 'O',
'to' : 'O',
'have.' : 'O',
'python' : 'high-level language',
'and' : 'O',
'php' : 'ssl',
'and' : 'O',
'java' : 'low-level language',
'are' : 'O',
'programming' : 'O',
'languages' : 'O'}
或者像保留句子完整性的元组列表(在我的情况下这也很重要)
final_output = [('Python' , 'low-level language'),
('and' , 'O'),
('Php' , 'ssl'),
('and' , 'O'),
('Java' , 'low-level language'),
('are' , 'O'),
('programming' , 'O'),
('languages.' , 'O'),
('PYTHON' , 'high-level language'),
('and' , 'O'),
('PHP' , 'ssl'),
('and' , 'O'),
('JAVA' , 'low-level language'),
('are' , 'O'),
('good' , 'O'),
('skills' , 'O'),
('to' , 'O'),
('have.' , 'O'),
('python' , 'high-level language'),
('and' , 'O'),
('php' , 'ssl'),
('and' , 'O'),
('java' , 'low-level language'),
('are' , 'O'),
('programming' , 'O'),
('languages' , 'O')]
我试图通过考虑我的输入来比较作为两个列表(而不是键和字典的字典之间的比较)并写下以下代码行来实现这一点:
l = ['Python', 'PHP', 'Java']
st = 'Python and Php and Java are programming languages. PYTHON and PHP and JAVA are good skills to have. python and php and java are programming languages'
对于上面的输入我写道:
[i for i in (st.split(' ')) if i.lower() in [i.lower() for i in l]]
并输出为:
['Python', 'Php', 'Java', 'PYTHON', 'PHP', 'JAVA', 'python', 'php', 'java']
我想将其应用于比较字典和列表并根据需要获取输出,但不知道如何操作。
答案 0 :(得分:1)
这很简单:
l = {'Python' : 'high-level language', 'PHP' : 'ssl', 'Java' : 'low-level language'}
st = 'Python and Php and Java are programming languages. PYTHON and PHP and JAVA are good skills to have. python and php and java are programming languages'
l2 = {k.upper():v for k, v in l.items()}
output_dict = {i:l2.get(i.upper(), 'O') for i in st.split(' ')}
输出将是:
{'JAVA': 'low-level language',
'Java': 'low-level language',
'PHP': 'ssl',
'PYTHON': 'high-level language',
'Php': 'ssl',
'Python': 'high-level language',
'and': 'O',
'are': 'O',
'good': 'O',
'have.': 'O',
'java': 'low-level language',
'languages': 'O',
'languages.': 'O',
'php': 'ssl',
'programming': 'O',
'python': 'high-level language',
'skills': 'O',
'to': 'O'}
如果您想在输入时获得相同的订单!只需通过订单键进行操作即可!:
your_order_key = 'Python and Php and Java are programming languages. PYTHON and PHP and JAVA are good skills to have. python and php and java are programming languages'.split(' ')
获得订单字典!你可以使用collection lib
。
from collections import OrderedDict
order_dict = OrderedDict()
for k in your_order_key:
order_dict[k]=output.get(k)
全部说明:
from collections import OrderedDict
order_dict = OrderedDict()
l = {'Python' : 'high-level language', 'PHP' : 'ssl', 'Java' : 'low-level language'}
st = 'Python and Php and Java are programming languages. PYTHON and PHP and JAVA are good skills to have. python and php and java are programming languages'
l2 = {k.upper():v for k, v in l.items()}
output_dict = {i:l2.get(i.upper(), 'O') for i in st.split(' ')}
for k in your_order_key:
order_dict[k]=output.get(k)
然后输出将是:
OrderedDict([('Python', 'high-level language'),
('and', 'O'),
('Php', 'ssl'),
('Java', 'low-level language'),
('are', 'O'),
('programming', 'O'),
('languages.', 'O'),
('PYTHON', 'high-level language'),
('PHP', 'ssl'),
('JAVA', 'low-level language'),
('good', 'O'),
('skills', 'O'),
('to', 'O'),
('have.', 'O'),
('python', 'high-level language'),
('php', 'ssl'),
('java', 'low-level language'),
('languages', 'O')])