如何在python字典中创建缩写
我想在字典中缩写2个字符串中的第一个字。如何在python字典" title="python字典">python字典中创建缩写
输入字典:
names = { 'fire' : 'John Smith', 'water' : 'Steve Doe', 'earth' : 'Bob Smith'
}
我想这是输出。
输出词典:
names_ab = { 'fire' : 'J. Smith', 'water' : 'S. Doe', 'earth' : 'B. Smith'
}
回答:
你可以做这样的事情:
names = {'fire': 'John Smith', 'water': 'Steve Doe', 'earth': 'Bob Smith'} names_ab = {}
for element, name in names.items():
first_name, last_name = name.split()
names_ab[element] = '{}. {}'.format(first_name[0], last_name)
print(names_ab)
,输出:
{'fire': 'J. Smith', 'water': 'S. Doe', 'earth': 'B. Smith'}
如果你需要为更多的名字的工作,你可以使用像这样的东西:
for element, name in names.items(): *first_names, last_name = name.split()
names_ab[element] = '{}. {}'.format('. '.join(n[0] for n in first_names), last_name)
回答:
通过使用join
和split
调整在字典中的值
names = { 'fire' : 'John Smith', 'water' : 'Steve Doe', 'earth' : 'Bob Smith will' } {k:'. '.join([v[0],' '.join(v.split()[1:])]) for k,v in names.items()}
#Output:
#{'earth': 'B. Smith will', 'fire': 'J. Smith', 'water': 'S. Doe'}
回答:
一种可能的方法是提取在一捕获组该第一个大写字母和使用re.sub()
在一个替换字符串引用捕获组:
In [1]: import re In [2]: names = { 'fire' : 'John Smith', 'water' : 'Steve Doe', 'earth' : 'Bob Smith' }
In [3]: pattern = re.compile(r"^([A-Z])[a-z]+")
In [4]: print({key: pattern.sub(r"\1.", value)
...: for key, value in names.items()})
{'fire': 'J. Smith', 'water': 'S. Doe', 'earth': 'B. Smith'}
请注意,这也可以处理在字符串中定义了多于两个单词/名称的情况 - 例如“Amy Farrah Fowler“。
虽然,我可以想象一个案例也可以打破这种方法。严格地说,这是一个自然语言处理问题,但取决于您的具体情况中可能的名称。
回答:
这应该适用于您的字典中任何数量的单词作为值。
names = {'earth': 'Bob Smith Jobs', 'fire': 'John Smith', 'water': 'Steve Doe'} d = {}
for k in names:
first, *rest = names[k].split()
d[k] = '{0}. '.format(first[0]) + ' '.join(rest)
print(d)
但这只能在Python 3
以上是 如何在python字典中创建缩写 的全部内容, 来源链接: utcz.com/qa/259513.html