d =dict(input('Enter a dictionary'))
sum = 0
for i in d.values():
sum +=i
print(sum)
输出:Enter a dictionary{'a': 100, 'b':200, 'c':300}
这就是问题出现:
Traceback (most recent call last):
File "G:/DurgaSoftPython/smath.py", line 2, in <module>
d =dict(input('Enter a dictionary'))
ValueError: dictionary update sequence element #0 has length 1; 2 is required
不能使用dict
构造函数从字符串创建dict
,但可以使用ast.literal_eval
:
from ast import literal_eval
d = literal_eval(input('Enter a dictionary'))
s = 0 # don't name your variable `sum` (which is a built-in Python function
# you could've used to solve this problem)
for i in d.values():
s +=i
print(s)
输出:
Enter a dictionary{'a': 100, 'b':200, 'c':300}
600
使用sum
:
d = literal_eval(input('Enter a dictionary'))
s = sum(d.values())
print(s)
import json
inp = input('Enter a dictionary')
inp = dict(json.loads(inp))
sum = sum(inp.values())
print(sum)
输入字典{"a": 100, "b":200, "c":300}
输出 600
实际上input
函数的返回是一个字符串。因此,为了获得有效的pythondict
您需要评估输入字符串并将其转换为字典。
一种方法可以使用包中的literal_eval
来完成ast
。 下面是一个示例:
from ast import literal_eval as le
d = le(input('Enter a dictionary: '))
_sum = 0
for i in d.values():
_sum +=i
print(_sum)
演示:
Enter a dictionary: {'a': 100, 'b':200, 'c':300}
600
PS:另一种方法可以使用eval
但不建议这样做。