我是python的新手,我想知道是否有一种方法可以使使用出生年份计算的年龄值成为同一词典中具有年龄的项。
这就是我的想法,我认为有一种简单的方法,而无需使用其他函数变量。
person = {
'name': Jane,
'yearofbirth': 1995,
'yearnow': 2019,
'age': person['yearnow'] + person['yearofbirth']
}
任何帮助将不胜感激。谢谢!
答案 0 :(得分:0)
是的,你可以 只是不能一口气将整个命令降格
person = {
'name': Jane,
'yearofbirth': 1995,
'yearnow': 2019
}
person["age"] = (lambda yearnow, yearofbirth: yearnow - yearofbirth)(**person)
但是在您的示例中,您不应更改任何内容,因为无法(轻松地)简化它。我的解决方案仅应用于复杂的任务。在字典中有大量值的情况下,我只是您一种简化它的方法。
答案 1 :(得分:0)
您可以使用python代替当前年份的硬编码
from datetime import datetime
currentYear = datetime.now().year
person = {
'name': 'Jane',
'yearofbirth' : 1995
}
age = currentYear - person.get( "yearofbirth", "")
person.update({'age': age})
print(person)
由于尚未定义年龄,因此您无法在dict中设置年龄。
如果您喜欢上面的代码,则将年龄设置为字典外,然后将字典更新为我们根据currentYear和年龄计算出的值
输出为:
{'name': 'Jane', 'yearofbirth': 1991, 'age': 24}
答案 2 :(得分:-2)
通过使用从dict
派生的类,您可能具有自引用字典,但是dict
本身不具有此功能。以下代码摘自this answer。
class MyDict(dict):
def __getitem__(self, item):
return dict.__getitem__(self, item) % self
dictionary = MyDict({
'user' : 'gnucom',
'home' : '/home/%(user)s',
'bin' : '%(home)s/bin'
})
print dictionary["home"]
print dictionary["bin"]