我正在创建一个简单的GUI程序来管理优先级。
我已成功设法添加将项目添加到列表框的功能。现在我想将项目添加到名为List<>的内容中。在C#中。 Python中是否存在这样的事情?
例如,在C#中,要将项目添加到listview,我首先要创建:
List<Priority> priorities = new List<Priority>();
...然后创建以下方法:
void Add()
{
if (listView1.SelectedItems.Count > 0)
{
MessageBox.Show("Please make sure you have no priorities selected!", "Notification", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else if (txt_Priority.ReadOnly == true) { MessageBox.Show("Please make sure you refresh fields first!", "Notification", MessageBoxButtons.OK, MessageBoxIcon.Information); }
else
{
if ((txt_Priority.Text.Trim().Length == 0)) { MessageBox.Show("Please enter the word!", "Notification", MessageBoxButtons.OK, MessageBoxIcon.Information); }
else
{
Priority p = new Priority();
p.Subject = txt_Priority.Text;
if (priorities.Find(x => x.Subject == p.Subject) == null)
{
priorities.Add(p);
listView1.Items.Add(p.Subject);
}
else
{
MessageBox.Show("That priority already exists in your program!");
}
ClearAll();
Sync();
Count();
}
}
SaveAll();
}
答案 0 :(得分:3)
Python是dynamic:
>>> my_generic_list = []
>>> my_generic_list.append(3)
>>> my_generic_list.append("string")
>>> my_generic_list.append(['another list'])
>>> my_generic_list
[3, 'string', ['another list']]
在将任何对象附加到现有list之前,您不必定义任何内容。
Python使用duck-typing。如果迭代列表并在每个元素上调用方法,则需要确保元素理解该方法。
所以,如果你想要相当于:
List<Priority> priorities
您只需初始化一个列表,并确保只向其添加Priority
个实例。那就是它!
答案 1 :(得分:0)
幸运的是,从 Python 3.9 (3.8) 开始支持泛型集合:https://docs.python.org/3/library/typing.html#generic-concrete-collections
下面是一个例子:
listOfInts: list[int] = []
# dictionary with string keys and int values:
typedDict: dict[str, int] = []