Возможно ли в python добавить кортеж в качестве значения в словаре?
И если да, то как мы можем добавить новое значение? И как мы можем его удалить и изменить?Tuples in Dicts
ответ
>>> a = {'tuple': (23, 32)}
>>> a
{'tuple': (23, 32)}
>>> a['tuple'] = (42, 24)
>>> a
{'tuple': (42, 24)}
>>> del a['tuple']
>>> a
{}
если вы использовать кортежи в качестве ключей вы можете сделать:
>>> b = {(23, 32): 'tuple as key'}
>>> b
{(23, 32): 'tuple as key'}
>>> b[23, 32] = 42
>>> b
{(23, 32): 42}
Вообще нет ничего конкретного о кортежах быть в словаре, они продолжают вести себя как кортежи.
Вы не можете изменить сам кортеж. Вы должны заменить его на другой кортеж.
При использовании списка, вы можете также добавить значение к нему (изменение самого списка) без необходимости заменить его:
>> a = {'list': (23, 32)}
>> a
{'list': [23, 32]}
>> a['list'].append(99)
>> a
{'list': [23, 32, 99]}
В большинстве случаев, списки могут быть использованы в качестве замены для кортежей (с насколько я знаю, они поддерживают все функции кортежа - это утка, набирая человека!)
вам, кажется, не хватает некоторых частей – SilentGhost
@SilentGhost: не стесняйтесь, расскажите мне! BTW: Я не собирался дать полный ответ, так как вы уже дали хороший совет. Я только хотел добавить информацию о списках. – Juergen
Поскольку кортежи неизменяемы, вы не можете добавить значение к кортежу. То, что вы может do, представляет собой новый кортеж из текущего кортежа и дополнительное значение. Оператор +=
делает это для вас, при условии, что левый аргумент является переменной (или в данном случае значение словаря):
>>> t = {'k': (1, 2)}
>>> t['k'] += (3,)
>>> t
{'k': (1, 2, 3)}
Несмотря на это, если вы планируете изменять значение кортежа, возможно, лучше хранить списки? Они изменяемы.
Редактировать: С вашего имени updated Ваш вопрос & dagger;, соблюдайте следующие правила:
>>> d = {42: ('name', 'date')}
>>> d[42][0] = 'name2'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
Это происходит потому, что, как было сказано ранее, кортежи неизменны. Вы не можете их изменить. Если вы хотите изменить их, то на самом деле вам придется создать новый. Таким образом:
>>> d[42] = ('name2', d[42][2])
>>> d
{42: ('name2', 'date')}
В качестве примечания, вы можете использовать namedtuple
с. Они работают так же, как и обычные кортежи, но позволяют обращаться к элементам внутри кортежа по имени:
>>> from collections import namedtuple
>>> Person = namedtuple('Person', 'name date')
>>> t = {42: Person('name', 'date')}
>>> t[42] = Person('name2', t[42].date)
>>> t
{42: Person(name='name2', date='date')}
& кинжалом;: В следующий раз отредактируйте свой вопрос. Не задавайте ответ, содержащий только дополнительные вопросы. Это не форум.
t1=('name','date')
t2=('x','y')
# "Number" is a String key!
d1={"Number":t1}
# Update the value of "Number"
d1["Number"] = t2
# Use a tuple as key, and another tuple as value
d1[t1] = t2
# Obtain values (getters)
# Can throw a KeyError if "Number" not a key
foo = d1["Number"]
# Does not throw a key error, t1 is the value if "Number" is not in the dict
d1.get("Number", t1)
# t3 now is the same as t1
t3 = d1[ ('name', 'date') ]
Вы обновили свой вопрос повторно. Пожалуйста, взгляните на Python dict docs. Документация Python - одна из сильных сторон! И играйте с интерпретатором (python) в командной строке! Но продолжим.
первоначально ключ 0
д [0] = ('имя', datetime.now())
ID известно д 1 = д [0] дель d [0 ]
И, пожалуйста, рассмотреть вопрос об использовании
class Person(object):
personIdCounter = 1
def __init__(self):
self.id = Person.personIdCounter
Person.personIdCounter += 1
self.name
self.date
затем
persons = {}
person = Person()
persons[person.id] = person
person.name = "something"
persons[1].name = "something else"
Это выглядит лучше, чем кортеж и модель ваших данных.
спасибо u очень много! Но вы знаете ... i; m новичок в python..and Я действительно не «получаю» ваш ответ! Я предпочитаю, чтобы мои первые шаги в python сделали это простым способом: ( я чувствую себя глупо ... но .... :( – FILIaS
Я понял, что это все, что вы можете ввести в командной строке Python , для вас, чтобы играть. Класс Person показывает вам альтернативный способ, более структурированный, для решения таких проблем. – extraneon
- 1. typecasting tuples in swift
- 2. Vector of Tuples in C++
- 3. Python dicts in sqlalchemy
- 4. Dicts in Python
- 5. List comprehensions and tuples in Julia
- 6. typecasting in dict of dicts
- 7. Pinton Indexing Tuples
- 8. add_edges_from three tuples networkx
- 9. Форматирование dicts и вложенных dicts
- 10. Tuples - Python 2.7
- 11. tuples vs records
- 12. SIREn N-Tuples Результаты
- 13. Создание tuples modulo index
- 14. NET JsonConverter Tuples List
- 15. While loop and tuples
- 16. Pandas tuples groupby aggregation
- 17. Преобразование Список dicts вложенный список dicts
- 18. DataFrame из списка dicts из dicts
- 19. JSON кодировка для dicts dicts
- 20. Dict из dicts от dicts до DataFrame
- 21. Я пытаюсь сравнить два Tuples
- 22. Вопрос: std :: tuples/std :: array
- 23. Как я могу назвать Tuples?
- 24. Count n-tuples в SQL
- 25. RGB Tuples to RGB Integer
- 26. Tuples vs ViewModel в MVC
- 27. python: получать суб-dicts в dicts динамически?
- 28. Составьте список dicts в дикторе списков dicts
- 29. Как сделать список dicts с вложенным dicts
- 30. Вложенные dicts в python
Добавить новое значение в словарь? Добавить новое значение в кортеж в словаре? Что он? –