我对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'我希望在字典键和字符串单个单词之间进行不区分大小写的比较(对字符串应用拆分函数),并输出以下内容:
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']我想应用这个来比较字典和列表,并根据需要得到输出,但是不知道如何去做。
发布于 2017-11-24 03:56:32
太简单了:
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')])发布于 2017-11-24 05:44:13
不要为这个简单的任务使用两个循环,只需使用逻辑和一些条件来代替许多循环,您的工作可以在一个循环中完成:
import json
data_keys = {'Python': 'high-level language', 'PHP': 'ssl', 'Java': 'low-level language'}
data = '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'
result = {}
for words in data.split():
if words.title() in data_keys:
result[words] = data_keys.get(words.title())
elif words.lower() in data_keys:
result[words] = data_keys.get(words.lower())
elif words.upper() in data_keys:
result[words] = data_keys.get(words.upper())
else:
result[words] = 0
print(json.dumps(result, indent=2))产出:
{
"php": "ssl",
"Java": "low-level language",
"Python": "high-level language",
"to": 0,
"programming": 0,
"have.": 0,
"java": "low-level language",
"PHP": "ssl",
"languages": 0,
"python": "high-level language",
"skills": 0,
"languages.": 0,
"Php": "ssl",
"JAVA": "low-level language",
"are": 0,
"PYTHON": "high-level language",
"and": 0,
"good": 0
}如果您想按照您的注释来维持秩序:
应保持句子的完整性。
然后:
import json
data_keys = {'Python': 'high-level language', 'PHP': 'ssl', 'Java': 'low-level language'}
data = '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'
result = []
for words in data.split():
if words.title() in data_keys:
result.append((words,data_keys.get(words.title())))
elif words.lower() in data_keys:
result.append((words,data_keys.get(words.lower())))
elif words.upper() in data_keys:
result.append((words,data_keys.get(words.upper())))
else:
result.append((words,0))
print(json.dumps(result,indent=2))产出:
[
[
"Python",
"high-level language"
],
[
"and",
0
],
[
"Php",
"ssl"
],
[
"and",
0
],
[
"Java",
"low-level language"
],
[
"are",
0
],
[
"programming",
0
],
[
"languages.",
0
],
[
"PYTHON",
"high-level language"
],
[
"and",
0
],
[
"PHP",
"ssl"
],
[
"and",
0
],
[
"JAVA",
"low-level language"
],
[
"are",
0
],
[
"good",
0
],
[
"skills",
0
],
[
"to",
0
],
[
"have.",
0
],
[
"python",
"high-level language"
],
[
"and",
0
],
[
"php",
"ssl"
],
[
"and",
0
],
[
"java",
"low-level language"
],
[
"are",
0
],
[
"programming",
0
],
[
"languages",
0
]
]https://stackoverflow.com/questions/47466084
复制相似问题