为Python字典添加新字段

时间:2017-03-22 21:49:34

标签: python dictionary counter

我有一个dict,我用Counter来获取每个键的术语频率,例如'A''B'

dict = {'A': Counter({'food': 30, 'menu': 19, 'good': 15}), 'B': Counter({'one': 5, 'chicken': 10})}

我希望能够添加一个新字段,以便每个字词都有另一个值。

我试过了:

for key, values in dict.items():
    for it1, it2 in values:
         dict[key][it1][it2] = 0

但我收到了:

ValueError: too many values to unpack (expected 2)

我是否需要删除Counter对象?如何创建新值以及如何访问此值?

3 个答案:

答案 0 :(得分:1)

你最好创建一个全新的字典,以获得额外的嵌套字典:

dct = {key: {k: {v: 0} for k, v in values.items()} for key, values in dct.items()}

答案 1 :(得分:0)

如果不创建新的QStandardItems,您可以在内部使用dict操纵当前的dict

您可以这样打印当前项目:

Counter

输出:

dct = {'A': Counter({'food': 30, 'menu': 19, 'good': 15}), 'B': Counter({'one': 5, 'chicken': 10})}

for k, v in dct.items():
    print(k, v)

为了修改>>> A Counter({'food': 30, 'menu': 19, 'good': 15}) >>> B Counter({'chicken': 10, 'one': 5}) 中的值,您可以执行以下操作:

Counter dict

输出:

for k, v in dct:
    if "food" in v:
        v["food"] = 666

如果您想为print(dct) >>> {'A': Counter({'food': 666, 'menu': 19, 'good': 15}), 'B': Counter({'chicken': 10, 'one': 5})} 添加新元素,可以执行以下操作:

Counter dict

输出:

for k, v in dct.items():
    if "food" in v:
        v.update({"new_food":0})

print(dct)

否则,如果您想要新的>>> {'A': Counter({'food': 30, 'menu': 19, 'good': 15, 'new_food': 0}), 'B': Counter({'chicken': 10, 'one': 5})} "regular",可以使用dict

dict comprehension

答案 2 :(得分:0)

我希望我理解你的问题。你想再向柜台添加一个项目吗?如果是这种情况,您可以通过更新计数器对象来完成。随着你不断更新,计数会增加。

mydict['A'].update(['price'])
mydict['B'].update(['cow'])
print mydict

如果你再次更新

{'A': Counter({'food': 30, 'menu': 19, 'good': 15, 'price': 2}), 'B': Counter({'chicken': 10, 'one': 5, 'cow': 2})}

将导致

echo off
set "src_folder=S:\data\010\Files"
set "dst_folder=%UserProfile%\Desktop\test"
for /f "tokens=*" %%i in (file-list.txt) do (
    xcopy /s/u "%src_folder%%%i" "%dst_folder%"
)