我有一本字典,其中每个键都由一个字符串组成,例如。 ['ba']
,每个值都是数字列表,例如[1, 2, 3, 4,]
。
我想遍历每个键,如果数字> = 100,我想在每个数字前添加“ D”。 'D123,并且如果数字<100,我想在前面添加“ DI”,例如。 'DI45“。我编写了以下代码,但它不会更改字典。
def dict_change(dicto):
for key,value in dicto.items():
for numb in value:
if numb >= 100:
numb = 'D' + str(numb)
else:
numb = 'DI' + str(numb)
return dicto
new_dict = dict_change(old_dict)
谢谢! :)
答案 0 :(得分:1)
使用map
和dict理解:
dct = {"a": [100, 200, 300], "b": [-100, 200, 100]}
def changer(number):
char = "D" if number > 100 else "DI"
return f"{char}{number}"
new_dct = {key: list(map(changer, values)) for key, values in dct.items()}
print(new_dct)
输出
{'a': ['DI100', 'D200', 'D300'], 'b': ['DI-100', 'D200', 'DI100']}
答案 1 :(得分:1)
def dict_change(dicto):
modified_dict = {}
for key,value in dicto.items():
key_tuple = tuple((('D' if no>100 else 'DI')+ str(no) for no in key))
modified_dict[key_tuple] = value
return modified_dict
old_dict = {(110, 12, 13, 14, 15, 101): 'ba', (12, 126, -127, 128): 'pa'}
print(dict_change(old_dict))
输出
{('D110', 'DI12', 'DI13', 'DI14', 'DI15', 'D101'): 'ba', ('DI12', 'D126', 'DI-127', 'D128'): 'pa'}
答案 2 :(得分:0)
这是最紧凑的单行方式:
src = {(11, 12, 13, 14, 15, 16): 'ba', (125, 126, 127, 128): 'pa'}
d_out = {tuple(['Di','D'][i>100]+ str(i) for i in k):v for k,v in src.items()}
print(d_out)
Out[1]:
{('Di11', 'Di12', 'Di13', 'Di14', 'Di15', 'Di16'): 'ba',
('D125', 'D126', 'D127', 'D128'): 'pa'}
如果i less than or equal 100
['DI','D'][i>100]
为您提供了['DI','D'][False]
,它被解释为['DI','D'][0]
并返回'DI'
如果i great than 100
['DI','D'][i>100]
为您提供了['DI','D'][True]
,它被解释为['DI','D'][1]
并返回'D'