按特定列表值排序和 return 字典
Sort and return dict by specific list value
我发现了这个:Sort keys in dictionary by value in a list in Python
这几乎就是我想要的。我想完全按照上面 post 中的定义进行排序,即按值列表中的特定项目排序,但我想 return 整个原始字典按指定的列表条目排序,而不是按键列表。
我最后一次尝试失败了:
details = {'India': ['New Dehli', 'A'],
'America': ['Washington DC', 'B'],
'Japan': ['Tokyo', 'C']
}
print('Country-Capital List...')
print(details)
print()
temp1 = sorted(details.items(), key=lambda value: details[value][1])
print(temp1)
错误:
{'India': ['New Dehli', 'A'], 'America': ['Washington DC', 'B'], 'Japan': ['Tokyo', 'C']}
Traceback (most recent call last):
File "C:/Users/Mark/PycharmProjects/main/main.py", line 11, in <module>
temp1 = sorted(details.items(), key=lambda value: details[value][1])
File "C:/Users/Mark/PycharmProjects/main/main.py", line 11, in <lambda>
temp1 = sorted(details.items(), key=lambda value: details[value][1])
TypeError: unhashable type: 'list'
您正在尝试使用 dict.items()
序列中的 (key, value)
对作为键。因为 value
是一个列表,所以失败了,因为键必须是可哈希的,而列表不是。
直接使用数值即可:
temp1 = sorted(details.items(), key=lambda item: item[1][1])
我将 lambda
参数重命名为 item
以使传入的内容更清楚。item[1]
是 (key, value)
对的值,item[1][1]
是每个列表中的第二个条目。
演示:
>>> details = {'India': ['New Dehli', 'A'],
... 'America': ['Washington DC', 'B'],
... 'Japan': ['Tokyo', 'C']
... }
>>> sorted(details.items(), key=lambda item: item[1][1])
[('India', ['New Dehli', 'A']), ('America', ['Washington DC', 'B']), ('Japan', ['Tokyo', 'C'])]
我发现了这个:Sort keys in dictionary by value in a list in Python
这几乎就是我想要的。我想完全按照上面 post 中的定义进行排序,即按值列表中的特定项目排序,但我想 return 整个原始字典按指定的列表条目排序,而不是按键列表。
我最后一次尝试失败了:
details = {'India': ['New Dehli', 'A'],
'America': ['Washington DC', 'B'],
'Japan': ['Tokyo', 'C']
}
print('Country-Capital List...')
print(details)
print()
temp1 = sorted(details.items(), key=lambda value: details[value][1])
print(temp1)
错误:
{'India': ['New Dehli', 'A'], 'America': ['Washington DC', 'B'], 'Japan': ['Tokyo', 'C']}
Traceback (most recent call last):
File "C:/Users/Mark/PycharmProjects/main/main.py", line 11, in <module>
temp1 = sorted(details.items(), key=lambda value: details[value][1])
File "C:/Users/Mark/PycharmProjects/main/main.py", line 11, in <lambda>
temp1 = sorted(details.items(), key=lambda value: details[value][1])
TypeError: unhashable type: 'list'
您正在尝试使用 dict.items()
序列中的 (key, value)
对作为键。因为 value
是一个列表,所以失败了,因为键必须是可哈希的,而列表不是。
直接使用数值即可:
temp1 = sorted(details.items(), key=lambda item: item[1][1])
我将 lambda
参数重命名为 item
以使传入的内容更清楚。item[1]
是 (key, value)
对的值,item[1][1]
是每个列表中的第二个条目。
演示:
>>> details = {'India': ['New Dehli', 'A'],
... 'America': ['Washington DC', 'B'],
... 'Japan': ['Tokyo', 'C']
... }
>>> sorted(details.items(), key=lambda item: item[1][1])
[('India', ['New Dehli', 'A']), ('America', ['Washington DC', 'B']), ('Japan', ['Tokyo', 'C'])]