我是Python新手,找不到解决方法。
我试图在输出字典中(如在输入字符串中)打印对['11','2']两次,但是它的某个地方被删除了。 有人可以帮忙吗?
import operator
a="2000 10003 1234000 44444444 9999 11 11 22 123"
a = a.split()
if len(a)<1:
print("List is empty")
else:
thisdict={}
print (a)
arr = []
m=-1
for i in range(0,len(a)):
m+=1
k=0
for j in list(a[m]):
k = k + int(j)
thisdict[a[m]] = k
i=i+1
sorted_dict = sorted(thisdict.items(), key=lambda kv: kv[1])
print(sorted_dict)
输出:
['2000', '10003', '1234000', '44444444', '9999', '11', '11', '22', '123']
[('2000', 2), ('11', 2), ('10003', 4), ('22', 4), ('123', 6), ('1234000', 10), ('44444444', 32), ('9999', 36)]
预期输出:
['2000', '10003', '1234000', '44444444', '9999', '11', '11', '22', '123']
[('2000', 2), ('11', 2), ('11', 2), ('10003', 4), ('22', 4), ('123', 6), ('1234000', 10), ('44444444', 32), ('9999', 36)]
答案 0 :(得分:2)
Python词典不能包含2个相同的对象作为键。 (或更准确地说,共享相同的hash
的对象)。
既然您的输出仍然是一个元组列表,那么为什么不首先去那里(而不是通过不能做到这一点的字典)?
这里是这样的:
a = "2000 10003 1234000 44444444 9999 11 11 22 123"
result = [(value, sum(int(char) for char in value)) for value in a.split()]
sorted_result = sorted(result, key=lambda x: (x[1], x[0]))
print(sorted_result)
输出:
[('11', 2), ('11', 2), ('2000', 2), ('10003', 4), ('22', 4), ('123', 6), ('1234000', 10), ('44444444', 32), ('9999', 36)]