我可以根据字典中的出生年份来计算年龄值吗?

时间:2019-04-28 16:24:35

标签: python dictionary

我是python的新手,我想知道是否有一种方法可以使使用出生年份计算的年龄值成为同一词典中具有年龄的项。

这就是我的想法,我认为有一种简单的方法,而无需使用其他函数变量。

person = {
          'name': Jane,
          'yearofbirth': 1995,
          'yearnow': 2019,
          'age': person['yearnow'] + person['yearofbirth']
        }

任何帮助将不胜感激。谢谢!

3 个答案:

答案 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"]