【问题标题】:python map dictionary to arraypython将字典映射到数组
【发布时间】:2012-03-27 08:56:59
【问题描述】:

我有一个表格的数据列表:

[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]

谢谢

编辑: 在这里澄清一下,对于一行,但是我希望文件中的所有行都发生这种映射:

输入:["line1","a"]

输出:["line1",5]

【问题讨论】:

  • 这里的预期输出是什么?
  • 请看我的例子,也许我不清楚,数组的第一种形式是 (string,string) 变成了 (string,int) 的第二种“映射”形式
  • 您的第一个代码示例中是a 还是"a"
  • 抱歉,['line1','a']

标签: python arrays map


【解决方案1】:

您可以尝试使用列表推导。

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 ]

【讨论】:

  • 有没有办法在不指定 x 的情况下做到这一点?我的实际数据有更多列 - 我对其进行了简化以使我的解释更清楚。
  • @user1220022 :我更新了我的答案,因为您的列表项中只有 2 个成员
  • 这正是我所追求的,我忘记了列表迭代。谢谢!
【解决方案2】:

试试这样的:

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

【讨论】:

    【解决方案3】:
    >>> 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]]
    

    【讨论】:

    • 同样,有没有办法在不指定列号的情况下做到这一点?我的实际数据有更多列 - 我对其进行了简化以使我的解释更清楚
    • @user1220022 你能在你的问题中发布你想要的完整输入/输出吗?
    • 这个输出是 100% 正确的,但是在我的实际数据中我有 15 列。所以我不想这样做:[[line[0], mapping[line[1]], line[2],line[3]...,line[14],line[15]] for line in data]
    • 你不必这样做,只要数据是一个数组,它就会被完全迭代。
    • 所以我只需要在映射之前处理列?即您的示例代码和其他列将自行填写?
    【解决方案4】:
    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

    【讨论】:

      猜你喜欢
      • 2015-10-17
      • 2023-01-01
      • 1970-01-01
      • 2016-03-05
      • 1970-01-01
      • 1970-01-01
      • 2019-07-30
      • 2013-09-21
      • 1970-01-01
      相关资源
      最近更新 更多