2015-04-30 27 views
1

在这个问题上,他们要你带配对字符串和整数输入,就像这样:的Python采取配对字符串和整数输入

4 that 
3 be 
0 to 
1 be 
5 question 
1 or 
2 not 
4 is 
2 to 
4 the 

https://www.hackerrank.com/challenges/countingsort3

我的问题是,我可以忽略字符串,但我不知道如何让我的代码只计算整数值而不创建字典,因为我想订购该集合。他们是一个简单的方法来做到这一点?使用我一直:

ar = [int(i) for i in raw_input().strip().split()] 

的整数列表,但对于integer__string多条线路上,有什么评价的最好方法?

回答

0

的问题是基于计数你不需要整型,一个collections.Counter字典将计数你的信:

Counter((raw_input().split()[0]) for _ in range(int(raw_input()))) 

这将得到次,每次“INT所有量“出现。

如果你喜欢一个列表:

[raw_input().split()[0] for _ in range(int(raw_input()))] 

从样品输入返回['4', '3', '0', '1', '5', '1', '2', '4', '2', '4']

10 <- n 
4 that 
3 be 
0 to 
1 be 
5 question 
1 or 
2 not 
4 is 
2 to 
4 the 

如果你想它下令使用排序,并强制转换为int:

sorted([int(raw_input().split()[0]) for _ in range(int(raw_input()))]) 

range(int(raw_input()))N,列表AR的大小。如果您需要单个列表中的所有数据,则需要使用它。拆分时也不需要剥离。

如果你想有一个字典后:

data = dict(raw_input().split() for _ in range(int(raw_input()))) 

这将使您:

{'1': 'or', '0': 'to', '3': 'be', '2': 'to', '5': 'question', '4': 'the'} 
+0

所以这将摆脱后的数字的话,但还是给我留下的问题维护与所附单词相关的信息。我会更好地创建两个数组,一个用于数字,一个用于文字? – Rob

+0

如果你想两个然后使用一个字典,如果你需要保持实际的顺序,然后使用OrderedDict,是实际相关的话,但? –

+0

不是在练习中,但我认为这是目标。我感谢所有的帮助,希望这会让我更进一步。我想我需要进一步检查raw_input! – Rob

0

您需要遍历输入行。我在这里使用iter(raw_input, ''),它会重复调用raw_input,直到它返回一个空字符串。 对于每一行,我们将它剥离并在空白处分割一次。如果行上有任何项目(a.k.a不只是空格),我们会在数组末尾添加强制为一个整数的行上的第一个空格分隔的项目。

array = [] 
for line in iter(raw_input, ''): 
    items = line.strip().split(None, 1) 
    if items: 
     array.append(int(items[0]))