这是我的字典:
article_names = {'AppliedEthics': (14, ['Ngaiklin', 'ip:pD950754B.dip.t-dialin.net']),
'Anarchism': (406, ['Bobdobbs1723', 'Brion_VIBBER', 'DanKeshet', 'David_depaoli',
'Eclecticology', 'Graft', 'Lee_Daniel_Crocker', 'Peter_Winnberg', 'Quercusrobur',
'The_Cunctator', 'Tzartzam', 'ip:151.140.141.30', 'ip:206.82.16.35', 'ip:216.103.84.145',
'ip:24.188.31.147']), 'AmericanSamoa': (14, ['Ngaiklin', 'ip:office.bomis.com']),
'AccessibleComputing': (14, ['Ngaiklin', 'RoseParks'])}
如您所见,它的格式为article_names [name] :( [编辑次数],[n个编辑过的用户])
我想获取每个字典键的值的第二部分(Aka数字后括号中的部分),并在将它们存回到不同的字典之前将其转换为用户数。我已经被这一段时间困扰了一段时间,昨晚我没有睡觉,所以我确信这很容易,但是我被打败了。
我正在尝试将其处理成的示例:
Anarchism [15] (number of users who edited the article)
AppliedEthics [2]
AmericanSamoa [2]
AccessibleComputing [2]
我有这个功能,对我的其他数据集工作正常,因为它们不是决定,我不能为我的生活将这个东西转换成更容易使用的东西......我觉得很愚蠢。
def formatter(sorted, type, edit_var, ID): #ID is just to identify if it's that god forsaken dict
count = 0
print()
for line in sorted:
count+=1
print("Printing the top {} {} in regards to {}:\n ".format(count, type, edit_var))
print("{:37} {:4}".format(37*"-", 4*"-"))
for line in sorted:
print("{:37} {}".format(line[0], line[1]))
答案 0 :(得分:2)
您可以使用元组解包来执行此操作:
for k, (num, users) in article_names.items():
print k, len(users)
article_names.items()
将其转换为元组列表:
article_names.items()
# [('AppliedEthics', (14, ['Ngaiklin', 'ip:pD950754B.dip.t-dialin.net'])), ('Anarchism', (406, ['Bobdobbs1723', 'Brion_VIBBER', 'DanKeshet', 'David_depaoli', 'Eclecticology', 'Graft', 'Lee_Daniel_Crocker', 'Peter_Winnberg', 'Quercusrobur', 'The_Cunctator', 'Tzartzam', 'ip:151.140.141.30', 'ip:206.82.16.35', 'ip:216.103.84.145', 'ip:24.188.31.147'])), ('AmericanSamoa', (14, ['Ngaiklin', 'ip:office.bomis.com'])), ('AccessibleComputing', (14, ['Ngaiklin', 'RoseParks']))]
这意味着每个项目看起来像:
('AppliedEthics', (14, ['Ngaiklin', 'ip:pD950754B.dip.t-dialin.net']))
和k, (n, users)
将这三个部分解析为三个变量。
答案 1 :(得分:1)
好的,所以你实际上想要返回list
个编辑器的长度。你可以用字典理解来做到这一点:
>>> from pprint import pprint
>>> edits = {k: [len(edits)] for k, (num, edits) in article_names.items()}
>>> pprint(edits)
{'AccessibleComputing': [2],
'AmericanSamoa': [2],
'Anarchism': [15],
'AppliedEthics': [2]}
一个很好的简单的单线程;它似乎是您在问题中指定的所需输出。这是有效的,因为每个值都是tuple
,编辑器的list
是tuple
的第二项。
答案 2 :(得分:1)
返回你需要的编辑器数量,以获得字典中元组内部编辑器列表的长度,它就像这个例子一样:
我使用你建议的同一个词:
mydict = {'AppliedEthics': (14, ['Ngaiklin', 'ip:pD950754B.dip.t-dialin.net']),'Anarchism': (406, ['Bobdobbs1723', 'Brion_VIBBER', 'DanKeshet', 'David_depaoli', 'Eclecticology', 'Graft', 'Lee_Daniel_Crocker', 'Peter_Winnberg', 'Quercusrobur', 'The_Cunctator', 'Tzartzam', 'ip:151.140.141.30', 'ip:206.82.16.35', 'ip:216.103.84.145','ip:24.188.31.147']), 'AmericanSamoa': (14, ['Ngaiklin', 'ip:office.bomis.com']),'AccessibleComputing': (14, ['Ngaiklin', 'RoseParks'])}
for key in mydict:
print key, [len(mydict[key][1])]
你将得到一个输出:
AppliedEthics [2]
Anarchism [15]
AmericanSamoa [2]
AccessibleComputing [2]
答案 3 :(得分:1)
如果要将结果存储在元组列表中:
[(i,len(d[i][1])) for i in d]
并在字典中:
{i:len(d[i][1]) for i in d}