словарь карт Python в массив - PullRequest
1 голос
/ 27 марта 2012

У меня есть список данных вида:

[line1,a]
[line2,c]
[line3,b]

Я хочу использовать отображение a = 5, c = 15, b = 10:

[line1,5]
[line2,15]
[line3,10]

Я пытаюсь использовать этот код, который, как я знаю, неверен, может кто-нибудь подсказать мне, как лучше всего этого добиться:

mapping = {"a": 5, "b": 10, "c": 15}
applyMap = [line[1] = 'a' for line in data]

Спасибо

EDIT: Просто для пояснения, для одной строки, однако я хочу, чтобы это сопоставление происходило со всеми строками в файле:

Ввод: ["line1","a"]

Выход: ["line1",5]

Ответы [ 4 ]

3 голосов
/ 27 марта 2012

Вы можете попробовать с пониманием списка.

lines = [
   ["line1", "much_more_items1", "a"],
   ["line2", "much_more_items2", "c"],
   ["line3", "much_more_items3", "b"],
]
mapping = {"a": 5, "b": 10, "c": 15}
# here I assume the key you need to remove is at last position of your items
result = [ line[0:-1] + [mapping[line[-1]] for line in lines ]
1 голос
/ 27 марта 2012

Попробуйте что-то вроде этого:

data = [
    ['line1', 'a'],
    ['line2', 'c'],
    ['line3', 'b'],
]

mapping = {"a": 5, "b": 10, "c": 15}

applyMap = [[line[0], mapping[line[1]]] for line in data]

print applyMap
0 голосов
/ 27 марта 2012
lineMap = {'line1': 'a', 'line2': 'b', 'line3': 'c'}  
cha2num = {'a': 5, 'b': 10, 'c': 15}  
result = [[key,cha2num[lineMap[key]]] for key in lineMap]  
print result  

вам нужна карта с релевантностью 'a' -> 5

0 голосов
/ 27 марта 2012
>>> data = [["line1", "a"], ["line2", "b"], ["line3", "c"]]
>>> mapping = { "a": 5, "b": 10, "c": 15}
>>> [[line[0], mapping[line[1]]] for line in data]
[['line1', 5], ['line2', 10], ['line3', 15]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...