添加新字符串时,将单个字符串转换为字符串列表

时间:2018-11-14 14:58:25

标签: python string

我找不到答案。 我从文件中读取了一个字典,它有一个键的字符串值。 然后我检查字典中是否已经有新值,如果不是,那么我要 将其附加到上一个字符串并获取给定键的值列表。

例如,如果我有字典

dict = {"vehicles": "car", "animals": "cat"}

并且以下条件为真

if "dog" not in dict["animals"]:

我想获取输出

dict = {"vehicles": "car", "animals": ["cat", "dog"] }

5 个答案:

答案 0 :(得分:4)

从字典开始,该字典的值为字符串set

d = {"vehicles": {"car"}, "animals": {"cat"}}

然后将一个新值添加两次只会将其添加一次(并且由于使用了哈希,因此查找速度很快):

d["animals"].add('dog')
d["animals"].add('dog')

>>> d
{'animals': {'dog', 'cat'}, 'vehicles': {'car'}}

如果像您的问题一样将字典作为输入,则可以使用字典理解设置的值轻松地对其进行转换,如下所示:

loaded_d = {"vehicles": "car", "animals": "cat"}  # dict just loaded from file
d = {key:{value} for key,value in loaded_d.items()}

答案 1 :(得分:1)

您只需要使用update方法来append只动物 list

dict = {"vehicles": "car", "animals": "cat"}

def appendItem(item):
  if item not in dict["animals"]:
      if not isinstance(dict["animals"], list):
          dict["animals"] = [dict["animals"]]
      dict["animals"].append(item)

appendItem("dog")
appendItem("dog")
appendItem("rabbit")
appendItem("cat")

输出

=> {'vehicles': 'car', 'animals': ['cat', 'dog', 'rabbit']}

答案 2 :(得分:1)

>>> if "dog" not in dict["animals"]:
...     dict["animals"] = [dict["animals"], "dog"]

答案 3 :(得分:1)

另一种方法是尝试将元素追加到列表,如果失败,则将字典值设为列表:

dic = {"vehicles": "car", "animals": "cat"}
if "dog" not in dic["animals"]:
    try:
        dic["animals"].append("dog")
    except:
        dic["animals"] = [dic["animals"], "dog"]

给出输出:

{'vehicles': 'car', 'animals': ['cat', 'dog']}

这样,如果您只有一个元素,则将执行except部分,使该值成为字符串列表。如果您随后尝试添加其他元素,它将被添加到列表中。

答案 4 :(得分:1)

应该是我想的简单方式

dict = {"vehicles": {"car"}, "animals": {"cat"}}
if "dog" not in dict["animals"]:
    dict["animals"].add("dog")