添加dict_values

时间:2012-12-10 05:09:51

标签: python

我希望能够合并列出的数据字典项的值(Point Pool,Strength,Health,Wisdom,Dexterity)并确保它们的总和不超过30.我可以导出数据中的项字典,但我不知道如何将它们加在一起以确保它们的总和不超过30的数值,然后在执行操作之前对其进行测试。

variables=(attributes.values())
print(variables)
dict_values(['0', '30', '0', '0', '0'])
variables=items(attributes.values())

我想将字典值一起添加并将它们分配给我将用作while条件的变量。感谢

3 个答案:

答案 0 :(得分:1)

我认为你的意思是:

char_info = {'Pool': '5', 'Strength': '10', 'Health': '3', 'Wisdom': '1', 'Dexterity': '2'}
if sum(int(x) for x in char_info.values()) > 30:
    print 'Too many points!'

答案 1 :(得分:0)

>>> variables=attributes.values()
>>> print(variables)
dict_values(['0', '30', '0', '0', '0'])
>>> print(sum(variables))
030000
>>> # Oops, you're adding strings; we want to convert them to ints...
>>> print(sum(int(variable) for variable in variables))
30
>>> if sum(int(variable) for variable in variables) > 30:
...     print('Cheater!')
... else:
...     print('OK')
OK

如果您不了解sum函数,请按以下方式明确写出:

total = 0
for value in attributes.values():
    total += int(value)
if value > 30:
    …

答案 2 :(得分:0)

我不完全确定我是否正确地解释了你;你应该让你的问题更加准确和清晰。

但是,我认为你要求一个语句来检查字典值的总和,看它是否大于30.如果是这样,请考虑这个:

dic = {'Key1':1,'Key2':5,'Key3':8}
vals = dic.values()
if sum(vals) > 30:
    # do something

如果您只检查某些键,请查看以下内容:

dic = {'Key1':1,'Key2':5,'Key3':8}
vals = map(lambda x:x[1],filter(lambda x:x[0] in ['Key1','Key2'],dic.items()))
if sum(vals) > 30:
    # do something

请进一步澄清您的问题!