我想只排序字典的 VALUES ,而不是 KEYS 。我已经颠倒了字典,所以这不是问题。我只想要对值进行排序。以下是我尝试的代码:
def reverse_dictionary(olddict):
newdict = {}
for key, value in olddict.items():
for string in value:
newdict.setdefault(string.lower(), []).append(key.lower())
for key, value in newdict.items():
newdict[key] = sorted(value)
return newdict
olddict=({'astute': ['Smart', 'clever', 'talented'],
'Accurate': ['exact', 'precise'],
'exact': ['precise'],
'talented': ['smart', 'keen', 'Bright'],
'smart': ['clever', 'bright', 'talented']})
result=reverse_dictionary(olddict)
print(result)
我得到的输出是:
{'keen': ['talented'], 'precise': ['exact', 'accurate'],
'exact': ['accurate'], 'bright': ['talented', 'smart'],
'clever': ['smart', 'astute'], 'talented': ['smart', 'astute'],
'smart': ['talented', 'astute']}
VALUES 在输出中未排序。请帮忙。
答案 0 :(得分:3)
您将在第一次循环迭代时返回字典:
for key, value in newdict.items():
newdict[key] = sorted(value)
return newdict
相反,您可以使用字典理解返回新词典:
return {k: sorted(v) for k, v in newdict.items()}
答案 1 :(得分:1)
你要从第二个回归到早期
def reverse_dictionary(olddict):
newdict = {}
for key, value in olddict.items():
for string in value:
newdict.setdefault(string.lower(), []).append(key.lower())
for key, value in newdict.items():
newdict[key] = sorted(value)
return newdict
olddict=({'astute': ['Smart', 'clever', 'talented'],
'Accurate': ['exact', 'precise'],
'exact': ['precise'],
'talented': ['smart', 'keen', 'Bright'],
'smart': ['clever', 'bright', 'talented']})
result=reverse_dictionary(olddict)
print(result)