【问题标题】:Python Dictionary: removing extra list and convert into integerPython Dictionary:删除额外列表并转换为整数
【发布时间】:2016-02-19 18:44:57
【问题描述】:

我有一本像这样的字典:

D = {0: [[' 11', '3', '6', '8']], \
     1: [[' 2']], \
     2: [[' 0', '2734', '394']], \
     3: [[' 1', '1163', '1216', '13', '181', '33', '379']]}

我想做的事:

  1. 从其值中删除额外列表
  2. 将每个元素的值转换为整数。

我试了一下:

for k,v in D.items():
        D[k] = [i.split(',') for i in D[k] int(i) ]

但它不起作用。

【问题讨论】:

  • 你能给出想要的样本输出吗?
  • 示例输出如下: D = {0:[11,3,6,8], 1: [ 2], 3: [ 1,1163,1216, 13, 181, 33, 379]}

标签: python-3.x


【解决方案1】:

看起来你想要的是一个字典,其中的值列表被解包并转换为整数;

{x:[int(z) for z in y[0]] for x,y in D.iteritems()}

D.iteritems() 返回所有要迭代的键/值对,键转到 x,值转到 y。我们遍历 y[0](内部列表)以获取所有元素的整数值,然后将它们转回列表,从而得到;

{x:[int(z) for z in y[0]] for x,y in D.iteritems()}
# {0: [11, 3, 6, 8], 
#  1: [2], 
#  2: [0, 2734, 394], 
#  3: [1, 1163, 1216, 13, 181, 33, 379]}

【讨论】:

    【解决方案2】:

    试试这个

    for k,v in D.items(): D[k] = [int(i.strip()) for i in v[0]]
    

    v 应该是[[' 11', '3', '6', '8']]v[0] 应该是内部列表[' 11', '3', '6', '8']

    【讨论】:

      【解决方案3】:

      如果字典中的每个值都是具有相同嵌套数的嵌套列表,则以下列表理解有效(适用于您的示例数据):

      for item in D:
          D[item] = [int(numb) for numb in D[item][0]]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-27
        • 2021-10-19
        • 1970-01-01
        • 1970-01-01
        • 2016-08-08
        • 2019-02-28
        • 2018-02-28
        • 2013-01-19
        相关资源
        最近更新 更多