从python词典和字符串中选择值到新的dicts

时间:2014-11-05 21:52:37

标签: python dictionary

我有一个排序地图,用于存储字典的键和值:

def sorted_map(map):
ms = sorted(map.iteritems(), key=lambda (k,v): (-v,k)) 
return ms

它将网络节点存储为键,将它们的度数存储为值 - 输出如下:

for line in ms:
    print  line


('Node n', 11)
('Node n+1', 11)
('Node n+2', 11)

值范围从~1000到0.我只需要选择那些值大于/等于10的节点(键)。最好将它们存储到新的dict(key:value)中。有办法吗?

2 个答案:

答案 0 :(得分:2)

只需从原始字典项创建一个新字典,保持键值> = 10

的键/值对
d = {1:23,2:20,3:10,4:9,5:1}
print({k:v for k,v in d.items() if v >=10})
{1: 23, 2: 20, 3: 10}

如果您只是想要一个新的字典,则不需要排序。

答案 1 :(得分:1)

来自Padraic的dict理解是一个更好的解决方案,但只是为了看看那里有什么你可以使用filter和dict函数:

def sorted_map(dictionary):
    ms = sorted(dictionary.iteritems(), key=lambda (k, v): (-v, k))
    return ms

star_map = {
    'Node 1': 11,
    'Node 2': 12,
    'Node 3': 9,
}

filtered = filter(lambda x: x[1] >= 10, sorted_map(star_map))

print(dict(filtered))

注意:您不应将map用作变量名,因为这是一个内置函数。