使用python中的部分键在dict中添加列

时间:2012-06-04 18:16:42

标签: python dictionary key

设置字典:

rr = range(1,11)
ft =[('sd:jan:'+ str(x), 'News') for x in rr]    
fd = dict(ft)

 fd
    {'sd:jan:1': 'News',
     'sd:jan:10': 'News',
     'sd:jan:2': 'News',
     'sd:jan:3': 'News',
     'sd:jan:4': 'News',
     'sd:jan:5': 'News',
     'sd:jan:6': 'News',
     'sd:jan:7': 'News',
     'sd:jan:8': 'News',
     'sd:jan:9': 'News'}

fd.keys()

['sd:jan:10',
 'sd:jan:2',
 'sd:jan:3',
 'sd:jan:1',
 'sd:jan:6',
 'sd:jan:7',
 'sd:jan:4',
 'sd:jan:5',
 'sd:jan:8',
 'sd:jan:9']

如何在密钥中添加'jan'的所有值?

编辑:我在为“jan”的部分键添加值(1 + 2 + 3 + 4 + 5 + 6 + ... + 10)。

4 个答案:

答案 0 :(得分:2)

如果你可以避免它,你不应该将数字转换为字符串,如果你想稍后用数字做一些事情。怎么样:

rr = range(1,11)
ft =[(('sd','jan',x), 'News') for x in rr]    
fd = dict(ft)

tot = sum(val
   for (key, subkey, val) in fd
   if subkey == 'jan')

>>>tot
55

答案 1 :(得分:1)

如何使用generator expression

sum(int(i.split(':')[-1]) for i in fd.keys())

给出:

55

:拆分每个条目,抓取最后一个字段,转换为int并汇总它们。

如果您需要检查这些数字,或者之后由于某种原因想要它们,您可以使用list comprehension轻松地将它们收集到列表中:

[int(i.split(':')[-1]) for i in fd.keys()]

答案 2 :(得分:0)

len([i for i in fd if i[3:6] == 'jan'])

创建列表理解,通过'jan'子串([3:6])对其进行过滤。使用len计算结果列表。

答案 3 :(得分:0)

for key in fd:
if 'jan' in key:
    total=total+int(key.split(':')[-1])