【问题标题】:Replace the empty list to something character such as "a"将空列表替换为诸如“a”之类的字符
【发布时间】:2019-02-01 16:45:42
【问题描述】:

我想将 dictionary_values 中的空列表替换为随机字符,例如“a”。

我的意见:

k = [{'1': 'man'},
{'8': []},
{'3': 'chester'},
{'5': 'united'},
{'7': 'one'},
{'0': 'man'},
{'2': 'army'},
{'4': 'my'},
{'6': 'random'},
{'9': 'example'},
{'1': 'for'},
{'8': []},
{'3': 'asking'},
{'5': 'in'},
{'7': 'stack'},
{'0': 'over'},
{'2': 'flow'},
{'4': 'expert'},
{'6': 'people'},
{'9': 'yes'}]

我当前的代码:

for i in k:
    for u, l in i.items():
        if "[]" in l:
            l.replace("[]", "a")
            print(l)

我尝试运行此代码但没有得到任何输出。如果可能,我想将所有“[]”替换为“a”。有可能实现这一点吗?

【问题讨论】:

    标签: python list dictionary replace


    【解决方案1】:

    您一直在尝试用字符串替换 [] 类型,而您应该更新字典的值。此外,您在if "[]" in l: 行中进行了错误的条件检查,其中 l 是一个空列表,而字符串"[]" 永远不会返回True

    for i in k:
        for u, l in i.items():
            if []==l:
                i[u]='a'
                print(l)
    

    输出

    [{'1': '男人'},
    {'8': 'a'},
    {'3': '切斯特'},
    {'5': '联合'},
    {'7': '一个'},
    {'0': '男人'},
    {'2': '军队'},
    {'4': '我的'},
    {'6': '随机'},
    {'9': '例子'},
    {'1': 'for'},
    {'8': 'a'},
    {'3': '询问'},
    {'5': '在'},
    {'7': '堆栈'},
    {'0': '结束'},
    {'2': '流'},
    {'4': '专家'},
    {'6': '人'},
    {'9':'是'}]

    【讨论】:

      【解决方案2】:
      for i in k:
          for u, l in i.items():
              if type(l) == list and not l:# Check If type is list and if its empty
                  l = 'a'#just assign a instead of using replace which is used in string
                  print(l)
      

      您可以检查对象的类型为列表而不是字符串 '[]'

      【讨论】:

      • 为什么不直接比较一个空列表呢? if l == []?
      • 这是一种方法,实际上是一种更好的方法,但我只是想让它更容易理解,所以我把它分成两个 [1.检查类型 2. 检查其是否为空]
      【解决方案3】:

      您的代码中有 2 个错误。

      1. 代码中的if 条件错误。而不是检查"[]" - 这是一个string,你必须检查[] 这是一个列表。
      2. 另外,不是替换包含空列表的键的值,而是追加到空列表。

      使用以下循环,它应该可以工作。

      for i in k:
          for u, l in i.items():
              if l == []:
                  i[u]="a"
      

      【讨论】:

        【解决方案4】:

        你可以试试这个。 -

        k = [i if i.values() != [[]] else {i.keys()[0]:"a"} for i in k ]
        print(k)
        

        结果 -

        [{'1': 'man'},
         {'8': 'a'}, 
        {'3': 'chester'},
         {'5': 'united'},
         {'7': 'one'},
         {'0': 'man'}, 
        {'2': 'army'},
         {'4': 'my'}, 
        {'6': 'random'}, 
        {'9': 'example'}, 
        {'1': 'for'}, 
        {'8': 'a'}, 
        {'3': 'asking'}, 
        {'5': 'in'}, 
        {'7': 'stack'}, 
        {'0': 'over'}, 
        {'2': 'flow'},
        {'4': 'expert'}, 
        {'6': 'people'}, 
        {'9': 'yes'}]
        

        【讨论】:

          猜你喜欢
          • 2018-10-09
          • 2012-09-05
          • 2019-10-04
          • 1970-01-01
          • 1970-01-01
          • 2014-11-12
          • 2023-03-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多