有没有更好的方法将列表中的条目添加到字典中?
Is there a better way to add entries from lists to a dictionary?
我在学习Python的时候遇到了这个任务:
Imagine Python did not have built-in support for sets. Show how we
could use dictionaries to represent sets. Write the four set
operations | - ^ & for this new representation of sets.
下面你可以看到答案:
First, for the ‘or’ operation, we add entries to the new dictionary
from both input lists:
l1 = [1,2,3,4,5]
l2 = [4,5,6,7,8]
def t_or(l1,l2):
result = {}
for x in l1: result[x] = 0
for x in l2: result[x] = 0
print(result)
所以,我想知道为什么作者要用这种奇怪的方法来添加条目result[x] = 0
?有没有更好的方法,也许可以使用 .add
、.insert
等替代方法?
result[key] = value
是在 Python 字典中分配新对 key:value
的方法。您不必先在字典上创建条目键。例如,如果您来自 Java,则语法如下:
Map<String, String> result = new HashMap<int, int>();
result.put(1, 0);
如您所见,在 Java 上您也没有声明密钥,很多语言都会发生同样的情况,这是因为字典密钥的工作方式。
当你想从字典中检索一个元素时,你必须确保该键已经存在于字典中,否则会抛出异常。
您在Python中想到的.add
或.insert
是.append
,它用于向列表添加新元素:
my_list = []
my_list.append(0)
所以不,没有更好的方法或不同的方法来在 Python 字典上分配新的 key:value
对。
我在学习Python的时候遇到了这个任务:
Imagine Python did not have built-in support for sets. Show how we could use dictionaries to represent sets. Write the four set operations | - ^ & for this new representation of sets.
下面你可以看到答案:
First, for the ‘or’ operation, we add entries to the new dictionary from both input lists:
l1 = [1,2,3,4,5]
l2 = [4,5,6,7,8]
def t_or(l1,l2):
result = {}
for x in l1: result[x] = 0
for x in l2: result[x] = 0
print(result)
所以,我想知道为什么作者要用这种奇怪的方法来添加条目result[x] = 0
?有没有更好的方法,也许可以使用 .add
、.insert
等替代方法?
result[key] = value
是在 Python 字典中分配新对 key:value
的方法。您不必先在字典上创建条目键。例如,如果您来自 Java,则语法如下:
Map<String, String> result = new HashMap<int, int>();
result.put(1, 0);
如您所见,在 Java 上您也没有声明密钥,很多语言都会发生同样的情况,这是因为字典密钥的工作方式。
当你想从字典中检索一个元素时,你必须确保该键已经存在于字典中,否则会抛出异常。
您在Python中想到的.add
或.insert
是.append
,它用于向列表添加新元素:
my_list = []
my_list.append(0)
所以不,没有更好的方法或不同的方法来在 Python 字典上分配新的 key:value
对。