2016-09-13 7 views
0

В приведенной ниже части кода v - это список символов.Как преобразовать список строк в список целых чисел

import collections 
import csv 
import sys 


with open("prom output.csv","r") as f: 
    cr = csv.reader(f,delimiter=",") 
    d=collections.defaultdict(lambda : list()) 
    header=next(cr)  

    for r in cr: 
     d[r[0]].append(r[1]) 


with open("sorted output.csv","w") as f: 
    cr = csv.writer(f,sys.stdout, lineterminator='\n') 
    od = collections.OrderedDict(sorted(d.items())) 

    for k,v in od.items(): 
     cr.writerow(v) 

Мой вывод выглядит

enter image description here

Я хочу, чтобы отобразить все символы моего входа в целое число, так что вместо таблицы с символами я получить таблицу с числами. Я попытался использовать встроенную функцию ord(), но он не работает, поскольку он принимает только одиночные символы в качестве входных, а не списков. Вы можете помочь?

+0

так что v - это всего лишь список символов? то есть '['a', 'b', 'c', 'd', 'e', ​​'f', 'g']' –

+0

Как насчет v = [ord (i) для i в v]? – MaSdra

+0

это действительно работает. благодаря – Adriano10

ответ

3

Если у вас есть список писем, которые вы хотите преобразовать в числа попробовать:

>>> [ord(l) for l in letters] 
[97, 98, 99, 100, 101, 102, 103] 

или

>>> list(map(ord, letters)) 
[97, 98, 99, 100, 101, 102, 103] 

Или, если вы имеете дело с заглавными заголовками столбцов и хотите, чтобы e соответствующий индекс

>>> letters = ['A', 'B', 'C', 'D', 'E'] 
>>> [ord(l.lower()) -96 for l in letters] 
[1, 2, 3, 4, 5] 
0

Вы можете использовать map() применить операцию к каждому элементу списка:

a = ['a', 'b', 'c'] 
b = map(lambda c: ord(c), a) 

print b 
>>> [97, 98, 99] 
Смежные вопросы