我正在尝试创建一个将给定列表转换为给定字典的函数(如果需要,我可以指定/赋值).
例如,如果我有一个列表
['a', 'b', 'c', ..., 'z']
Run Code Online (Sandbox Code Playgroud)
我想转换成这样的字典
{1: 'a', 2: 'b', 3: 'c', ..., 26: 'z'}
Run Code Online (Sandbox Code Playgroud)
我知道如何使用字典理解来做到这一点
{num : chr(96 + num) for num in range(1, 26)}
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚如何将其变成一个更通用的函数,可以将任何列表转换为字典.这里最好的方法是什么?
我正在使用一个包含我感兴趣的三个不同类别的列表:整数,浮点数和字符串.我想将该列表转换为字典并将这三个类别中的每一个分配为一个键,然后将该列表的每个元素分配给适当的键值(例如,如果列表中的元素是字符串,那么它将被分配到"字符串"键的值.例如:
sample_list = [1.23, 34.34, 'abc', 'xyz', 22, 104]
Run Code Online (Sandbox Code Playgroud)
字典的结构应该是这样的:
new_dict = {"integers" : [list of all ints],
"floats" : [list of all floats],
"strings" : [list of all strings],
}
Run Code Online (Sandbox Code Playgroud)
从上面的示例列表中,输出将如下所示:
list_to_dict = {'float': [1.23, 34.34],
'integer', [22, 104],
'string', ['abc', 'xyz']
}
Run Code Online (Sandbox Code Playgroud)
我正在使用dict()和zip()将字典转换为列表,但我不确定如何构建条件以将原始列表的每个元素放入正确的键值对.这是我到目前为止所拥有的:
keys = ['integers', 'floats', 'strings']
values = [1.23, 34.34, 'abc', 'xyz', 22, 104]
mixed_dictionary = dict(zip(keys,values))
Run Code Online (Sandbox Code Playgroud)
这是正确的方法还是我应该采取不同的做法?如果这是正确的方法,我如何添加条件以将所有列表元素放入适当的键值?我尝试使用for循环和.append(),但都没有工作.
我一直在研究一个可以将列表/字符串转换为字典的函数,并且我能够成功地在一堆不同的样本上运行它.例如,我拿了一个字母表中的字母列表(az)并为它们分配了一个数字(1-26):
import string
mylist = list(string.ascii_lowercase)
def list_conversion(items):
print(dict(enumerate(items, 1)))
Run Code Online (Sandbox Code Playgroud)
所以当我打电话时,list_conversion(mylist)我得到了我正在寻找的输出:
{1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e', 6: 'f', 7: 'g', 8: 'h', 9: 'i', 10: 'j', 11: 'k', 12: 'l', 13: 'm', 14: 'n', 15: 'o', 16: 'p', 17: 'q', 18: 'r', 19: 's', 20: 't', 21: 'u', 22: 'v', 23: 'w', 24: 'x', 25: 'y', 26: 'z'}
Run Code Online (Sandbox Code Playgroud)
但是,我不确定如何运行此函数并仅返回特定的键/值.例如,我想返回奇数键的值.我理解如何在一个孤立的实例中执行此操作:
d = {'x': 1, 'y': 2, 'z': 3}
for key, value in d.items():
if …Run Code Online (Sandbox Code Playgroud) 我正在尝试提出一个简单的函数,它接受两个输入(dict键和dict值)并返回字典的新值.我希望能够为大量案例调用它,而不仅仅是一个特定的实例.
示例输入看起来像这样:
dict = {1: 11, 2: 12, 3: 13, 4: 14, 5: 15}
Run Code Online (Sandbox Code Playgroud)
输出看起来像这样:
new_dict = {1: 12, 2: 14, 3: 16, 4: 18, 5: 20}
Run Code Online (Sandbox Code Playgroud)
我试图使用像dict理解这样的东西(new_dict = {k:v + k, v in dict.items()}显然不起作用),但不确定这是否是正确的方法,并且无法弄清楚如何让这个加法部分正常工作.什么是干净/简单的方法,以便能够使用一堆不同的输入?