字符串中具有不同键的字典列表

SHR

这些是我的投入

hand = {'*': 1, 'v': 2, 'n': 1, 'i': 1, 'l': 2}
string = 'abc'

我需要用字符串中的每个字符替换“ *”,并将新字典附加到列表中。我需要的输出是这样的:

[{'v': 2, 'n': 1, 'i': 1, 'l': 2, 'a': 1}, {'v': 2, 'n': 1, 'i': 1, 'l': 2, 'b': 1}, {'v': 2, 'n': 1, 'i': 1, 'l': 2, 'c': 1}]

这是我所做的,但是没有用。我尝试了几种不同的方法,但没有成功。

del hand['*']
for x in string:
    item = {x: 1}
    newHand = hand
    newHand.update(item)
    print(newHand)
    list.append(newHand)
    newHand.pop(x)
print(list)

下面的输出是我要避免的事情:

{'v': 2, 'n': 1, 'i': 1, 'l': 2, 'a': 1, 'b': 1, 'c': 1}

谢谢

帕特里克·阿特纳

这将为相同的数据创建一个新名称:

newHand = hand

您始终在修改同一词典。您将引用存储到您的引用中list(顺便说一句,不要将其list用作变量名,而是对内置的阴影list())。如果您打印id()清单内容中的,您将看到它们都是相同的:

print( id(x) for x in list) # try that to see its the same object trice

您需要复制数据来创建三个不同的字典。

我选择dict从您的位置更新1-elem string并用handpop之后的其余部分更新它们'*'

hand = {'*': 1, 'v': 2, 'n': 1, 'i': 1, 'l': 2}

s = hand.pop("*")  # removes * and stores the calue
t = "abc"

# create a list of new dicts wich 1 elem each
l = [ {c:s} for c in t]

# update all inner dicts
for d in l:
    d.update(hand) # add what is in hand left

print(l)

输出:

[{'a': 1, 'i': 1, 'v': 2, 'l': 2, 'n': 1}, 
 {'i': 1, 'b': 1, 'v': 2, 'l': 2, 'n': 1}, 
 {'i': 1, 'c': 1, 'v': 2, 'l': 2, 'n': 1}]

您可以在此处找到有关可变变量复制的更多信息:如何克隆或复制列表?


也要更新现有密钥:

for d in l:
    for thing in hand:
        d.setdefault(thing,0)       # create key if not exists and set to 0
        d[thing] += hand[thing]     # add hands value on top

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

列出datetype的键,该键在字典python列表中具有字符串date

从字典列表中创建具有特定值的列表(键为字符串,值是整数列表)

带有不同单词顺序的字符串键的字典

如果字符串中有相同的键,则在列表字典中创建新列表

从每个键具有多个uniqe值的字符串列表中创建3级字典

如何从由字符串创建的字典中获取具有最高价值的键?

从字典列表中创建键字符串

从字符串 C# 列表中创建所有不同单词的字典

Python从具有key:value字符串的列表中创建字典

将具有字符串和字典的列表写到csv文件中

sed从字符串中删除具有不同值的特定键

Python:比较具有两个不同列表长度的列表中的字符串

搜索列表中的值是否在字典中,该字典的格式为键字符串,值列表(字符串)

如何从列表中删除空字符串,该列表是字典列表中特定键的值?

从字典列表中删除键为空字符串的字典

通过Python中每个键具有不同值的键过滤字典列表

有效识别字符串的一部分是否在列表/字典键中?

使用存储在多个字典中不同键中的字符串填充python元组

c#字典如何将具有单个键的重复值的分隔字符串列表中的数据添加到字典中

Python-计算具有与特定查找字符串匹配的值的字典键的数量

使多个字符串具有相同的字典键

如何从文件读取到具有字符串键和元组值的字典?

如果键包含字符串列表中的字符串,则从字典列表中删除条目

用Javascript修改具有重复键的字符串数组中的字符串

从列表中更改具有匹配字符串的列名

枚举列表中具有相似字符串的函数

带有字符串键和列表值的字典的 Python 理解

可视化具有不同长度的字符串列表作为值的 Python 字典

如果键是列表的子字符串,则创建新字典